Displaying 17 results from an estimated 17 matches for "cbuint".
2019 Aug 13
0
[PATCH libnbd 2/6] generator: Create only one Python wrapper per closure.
...t; if (!py_%s_mod) { PyErr_PrintEx (0); return -1; }\n" n;
+ pr " PyObject *py_%s = PyObject_CallMethod (py_%s_mod, \"c_int\", \"i\", *%s);\n" n n n;
+ pr " if (!py_%s) { PyErr_PrintEx (0); return -1; }\n" n;
+ | CBString _
+ | CBUInt _
+ | CBUInt64 _ -> ()
+ | CBArrayAndLen _ | CBMutable _ -> assert false
+ ) cbargs;
+ pr "\n";
+
+ pr " py_args = Py_BuildValue (\"(\"";
+ List.iter (
+ function
+ | CBArrayAndLen (UInt32 n, len) -> pr " \"O\""
+ | CB...
2019 Aug 09
0
[PATCH libnbd 1/2] generator: Handle closure args (cbargs) specially.
...en of arg * string (* array + number of entries *)
+| CBBytesIn of string * string (* like BytesIn *)
+| CBInt of string (* like Int *)
+| CBInt64 of string (* like Int64 *)
+| CBMutable of arg (* mutable argument, eg. int* *)
+| CBString of string (* like String *)
+| CBUInt of string (* like UInt *)
+| CBUInt64 of string (* like UInt64 *)
and permitted_state =
| Created (* can be called in the START state *)
| Connecting (* can be called when connecting/handshaking *)
@@ -932,7 +939,7 @@ Return the state of the debug fla...
2019 Aug 13
12
[PATCH 0/6] Implement OClosure.
Patches 1-4 are basically uncontroversial, straightforward refactoring
and IMHO we should just push them. Possibly 1-3 should be squashed
together, but I posted them separately so they are easier to review.
Patches 5 and 6 together implement OClosure. Patch 5 adds the feature
and is simple to understand.
Patch 6 changes the Closure completion callbacks into OClosure, but
because it doesn't
2019 Aug 13
0
[PATCH libnbd 1/6] generator: Share single list of all Closures.
..._call_description = "\n
This call does not block, because it returns data that is saved in
the handle from the NBD protocol handshake."
+(* Closures. *)
+let chunk_closure = {
+ cbname = "chunk";
+ cbargs = [ CBBytesIn ("subbuf", "count");
+ CBUInt64 "offset"; CBUInt "status";
+ CBMutable (Int "error") ]
+}
+let completion_closure = {
+ cbname = "completion";
+ cbargs = [ CBMutable (Int "error") ]
+}
+let debug_closure = {
+ cbname = "debug";
+ cbargs = [ CBString &qu...
2019 Aug 09
4
[PATCH libnbd 0/2] generator: Preparatory changes to the generator.
These are some simplifications to the generator. They don't probably
make much sense on their own, but they are preparatory to better
handling of enums, and or'd lists of flags.
Rich.
2019 Aug 10
0
[PATCH libnbd 2/9] generator: Generalize OFlags.
...lags *)
+| OFlags of string * flags (* optional flags, uint32_t in C *)
and ret =
| RBool (* return a boolean, or error *)
| RStaticString (* return a static string (must be located in
@@ -890,6 +890,10 @@ and cbarg =
| CBString of string (* like String *)
| CBUInt of string (* like UInt *)
| CBUInt64 of string (* like UInt64 *)
+and flags = {
+ flag_prefix : string; (* prefix of each flag name *)
+ flags : (string * int) list (* flag names and their values in C *)
+}
and permitted_state =
| Created (* can be called in t...
2019 Aug 09
0
[PATCH libnbd 2/2] generator: Change handling of Flags to be a true optional argument.
...tted_states = [ Connected ];
shortdesc = "read from the NBD server";
@@ -1407,8 +1410,8 @@ protocol extensions).";
Closure { cbname="chunk";
cbargs=[CBBytesIn ("subbuf", "count");
CBUInt64 "offset"; CBUInt "status";
- CBMutable (Int "error")] };
- Flags "flags" ];
+ CBMutable (Int "error")] } ];
+ optargs = [ OFlags "flags" ];
ret = RErr;...
2020 Sep 08
2
[libnbd PATCH] python: Plug some memory leaks on error paths
...-1; }\n" n;
pr " PyObject *py_%s = PyObject_CallMethod (py_%s_mod, \"c_int\", \"i\", *%s);\n" n n n;
+ pr " Py_DECREF (py_%s_mod);\n" n;
pr " if (!py_%s) { PyErr_PrintEx (0); return -1; }\n" n;
| CBString _
| CBUInt _
@@ -263,7 +264,7 @@ let print_python_binding name { args; optargs; ret; may_set_error } =
pr " PyObject *py_h;\n";
pr " struct nbd_handle *h;\n";
pr " %s ret;\n" (C.type_of_ret ret);
- pr " PyObject *py_ret;\n";
+ pr " PyObject *py_ret...
2019 Aug 10
0
[PATCH libnbd 3/9] generator: Add Enum type for enumerated types / unions.
...*opaque *)
+| Enum of string * enum (* enum/union type, int in C *)
| Int of string (* small int *)
| Int64 of string (* 64 bit signed int *)
| Path of string (* filename or path *)
@@ -890,6 +891,10 @@ and cbarg =
| CBString of string (* like String *)
| CBUInt of string (* like UInt *)
| CBUInt64 of string (* like UInt64 *)
+and enum = {
+ enum_prefix : string; (* prefix of each enum variant *)
+ enums : (string * int) list (* enum names and their values in C *)
+}
and flags = {
flag_prefix : string; (* prefix of each flag name...
2019 Aug 12
0
[PATCH libnbd 7/7] api: Remove the valid_flag from all callbacks.
..._mod) { PyErr_PrintEx (0); return -1; }\n" n;
+ pr " PyObject *py_%s = PyObject_CallMethod (py_%s_mod, \"c_int\", \"i\", *%s);\n" n n n;
+ pr " if (!py_%s) { PyErr_PrintEx (0); return -1; }\n" n;
| CBString _
| CBUInt _
| CBUInt64 _ -> ()
@@ -4253,7 +4244,7 @@ let print_python_binding name { args; optargs; ret; may_set_error } =
) cbargs;
pr "\n";
- pr " py_args = Py_BuildValue (\"(\"";
+ pr " py_args = Py_BuildValue (\"(\&quo...
2020 Mar 24
1
[PATCH libnbd v3] Add Go language bindings (golang) (RHBZ#1814538).
This feature is roughly finished now, although it needs a few more
tests and some examples.
It's pretty much up to par with all the other bindings, but it lacks a
completely safe AIO buffer. It won't stop you from freeing the buffer
too early) because golang's GC inexplicably lacks a way to declare a
root from C. I can probably do it with a global variable and ref
counting on the
2019 Aug 10
17
[PATCH libnbd 0/9] Add Enum and Flags types.
This largish series adds several new features to the generator.
Enum maps to enumerated types (like enum in C). The only current use
for this is replacing the nbd_set_tls (nbd, 0/1/2) parameter with
LIBNBD_TLS_DISABLE, LIBNBD_TLS_ALLOW, LIBNBD_TLS_REQUIRE (and natural
equivalents in other programming languages).
Flags maps to any uint32_t bitmask. It is basically a non-optional,
generalized
2019 Aug 13
0
[PATCH libnbd 2/4] api: Add free function and remove valid_flag parameter.
...r " if (!py_%s_mod) { PyErr_PrintEx (0); return -1; }\n" n;
+ pr " PyObject *py_%s = PyObject_CallMethod (py_%s_mod, \"c_int\", \"i\", *%s);\n" n n n;
+ pr " if (!py_%s) { PyErr_PrintEx (0); return -1; }\n" n;
| CBString _
| CBUInt _
| CBUInt64 _ -> ()
@@ -4059,7 +4051,7 @@ let print_python_closure_wrapper { cbname; cbargs } =
) cbargs;
pr "\n";
- pr " py_args = Py_BuildValue (\"(\"";
+ pr " py_args = Py_BuildValue (\"(\"";
List.iter (
function...
2020 Mar 25
3
[PATCH libnbd v4] Add Go language bindings (golang) (RHBZ#1814538).
Now runs a complete set of tests, notably including the AIO test.
File descriptors are passed in and out as plain ints (instead of
*os.File) for a couple of reasons: (1) We have to pass the plain int
to syscall.Select. (2) Turning an fd into an os.File causes golang to
set the blocking flag which is deeply unhelpful.
Rich.
2019 Aug 31
1
[PATCH libnbd] Add bindings for Rust language
Still not working, but I took the latest patch and:
- rebased it against libnbd 1.0
- fixed it so it handles new args and cbargs
The generator now runs without warnings.
This patch doesn't handle optargs at all. In C these are converted to
non-optional parameter. Rust doesn't (AFAIK) have optional or
labelled arguments unfortunately.
Rich.
2019 Aug 12
14
[PATCH libnbd 0/7] Add free callbacks and remove valid_flag.
As proposed here:
https://www.redhat.com/archives/libguestfs/2019-August/msg00130.html
I didn't actually read Eric's replies to that yet because I've been
concentrating on writing these patches all day. Anyway here they are
and I'll look at what Eric said about the proposal next.
Rich.
2019 Aug 13
8
[PATCH libnbd 0/4] Add free function to callbacks.
Patches 1 & 2 are rather complex, but the end result is that we pass
closures + user_data + free function in single struct parameters as I
described previously in this email:
https://www.redhat.com/archives/libguestfs/2019-August/msg00210.html
Patch 3 adds a convenient FREE_CALLBACK macro which seems a worthwhile
simplification if you buy into 1 & 2.
Patch 4 adds another macro which is