Displaying 12 results from an estimated 12 matches for "free_user_data".
2020 Sep 10
1
[libnbd PATCH] python: Fix more memory leaks
...me;
+ pr " PyObject *py_%s_fn;\n" cbname;
pr " nbd_%s_callback %s = { .callback = %s_wrapper,\n"
cbname cbname cbname;
- pr " .user_data = %s_user_data,\n" cbname;
pr " .free = free_user_data };\n"
| Enum (n, _) -> pr " int %s;\n" n
| Flags (n, _) ->
@@ -316,11 +315,10 @@ let print_python_binding name { args; optargs; ret; may_set_error } =
List.iter (
function
| OClosure { cbname } ->
- pr " struct user_data *%s_user_data = al...
2019 Aug 14
4
[PATCH libnbd 0/2] Use free callback to dereference NBD.Buffer.
In this patch series we use the newly introduced free callback
on the completion function to dererence the OCaml NBD.Buffer.
I will make the same kind of change for Python later in a
separate series.
The completion function is always called at the C level, even
if the OCaml program didn't use the optional argument. That's
because the free callback doesn't run otherwise.
There is a
2019 Aug 14
0
[PATCH libnbd 2/2] ocaml: Remove NBD.Buffer.free function, use the completion callback instead.
...quot; cbname;
- pr " caml_register_generational_global_root (&user_data->fnv);\n";
- pr " %s_callback.callback = %s_wrapper;\n" cbname cbname;
- pr " %s_callback.user_data = user_data;\n" cbname;
- pr " %s_callback.free = free_user_data;\n" cbname;
+ pr " %s_user_data->fnv = Field (%sv, 0);\n" cbname cbname;
+ pr " caml_register_generational_global_root (&%s_user_data->fnv);\n"
+ cbname;
pr " }\n";
+ pr " %s_callback.callback = %s_wrapper;\...
2019 Aug 15
13
[PATCH libnbd v2 00/10] Callbacks and OCaml and Python persistent buffers.
This is a combination of these two earlier series:
https://www.redhat.com/archives/libguestfs/2019-August/msg00235.html
https://www.redhat.com/archives/libguestfs/2019-August/msg00240.html
plus changes to allow .callback = NULL / .free != NULL, and to reduce
the complexity of freeing callbacks.
Although it's rather long there's nothing complex here. We might
consider squashing some
2019 Aug 14
5
[PATCH libnbd 0/3] Use free callback to hold ref to AIO buffer.
Basically the same as this patch series, but for Python:
https://www.redhat.com/archives/libguestfs/2019-August/msg00235.html
plus adding the 590 asynch test at the end.
Rich.
2019 Aug 13
1
Re: [PATCH libnbd] api: Rename nbd_aio_*_callback to nbd_aio_*.
On 8/13/19 10:37 AM, Richard W.M. Jones wrote:
> The original nbd_aio_* (non-callback) functions are removed and
> replaced with the renamed callback variants.
>
> This is a simple mechanical change to the API:
>
> (1) Any existing call to nbd_aio_*_callback can simply be renamed to
> nbd_aio_*
>
> (2) Any existing call to nbd_aio_* must have two extra NULL
2020 Sep 08
2
[libnbd PATCH] python: Plug some memory leaks on error paths
...\n";
List.iter (
function
| Bool _ -> ()
| BytesIn (n, _) -> pr " PyBuffer_Release (&%s);\n" n
| BytesPersistIn _ | BytesOut _ | BytesPersistOut _ -> ()
- | Closure _ -> ()
+ | Closure { cbname } ->
+ pr " if (%s_user_data) free_user_data (%s_user_data);\n" cbname cbname
| Enum _ -> ()
| Flags _ -> ()
| Fd _ | Int _ -> ()
@@ -550,6 +563,12 @@ let print_python_binding name { args; optargs; ret; may_set_error } =
| UInt32 _ -> ()
| UInt64 _ -> ()
) args;
+ List.iter (
+ function
+...
2019 Aug 14
0
[PATCH libnbd 2/3] python: Hold a refcount to persistent AIO buffer until command completion.
...(%s);\n" n;
+ pr " completion_user_data->buf = %s;\n" n;
+ | _ -> ()
+ ) args;
+
(* Call the underlying C function. *)
pr " ret = nbd_%s (h" name;
List.iter (
@@ -4384,7 +4405,8 @@ let generate_python_methods_c () =
pr " * and freed in the free_user_data function below.\n";
pr " */\n";
pr "struct user_data {\n";
- pr " PyObject *fn; /* Pointer to Python function. */\n";
+ pr " PyObject *fn; /* Optional pointer to Python function. */\n";
+ pr " PyObject *buf; /* Optional pointer t...
2020 Sep 11
0
[libnbd PATCH v2 2/5] generator: Refactor filtering of accepted OFlags
...args optargs =
List.length optargs + 1 (* handle *) + List.length args
@@ -614,7 +614,7 @@ let print_ocaml_binding (name, { args; optargs; ret }) =
pr " }\n";
pr " %s_callback.user_data = %s_user_data;\n" cbname cbname;
pr " %s_callback.free = free_user_data;\n" cbname;
- | OFlags (n, { flag_prefix }) ->
+ | OFlags (n, { flag_prefix }, _) ->
pr " uint32_t %s;\n" n;
pr " if (%sv != Val_int (0)) /* Some [ list of %s.t ] */\n"
n flag_prefix;
diff --git a/generator/Python.ml b/generator/Pytho...
2019 Oct 04
0
[PATCH libnbd 3/4] api: Add nbd_connect_socket.
...| BytesPersistOut (n, len) -> n
| Closure { cbname } -> cbname
| Enum (n, _) -> n
+ | Fd n -> n
| Flags (n, _) -> n
| Int n -> n
| Int64 n -> n
@@ -5945,6 +5985,9 @@ let print_ocaml_binding (name, { args; optargs; ret }) =
pr " %s_callback.free = free_user_data;\n" cbname
| Enum (n, { enum_prefix }) ->
pr " int %s = %s_val (%sv);\n" n enum_prefix n
+ | Fd n ->
+ pr " /* OCaml Unix.file_descr is just an int, at least on Unix. */\n";
+ pr " int %s = Int_val (%sv);\n" n n
| Flags (n...
2020 Sep 11
10
[libnbd PATCH v2 0/5] Add knobs for client- vs. server-side validation
In v2:
- now based on my proposal to add LIBNBD_SHUTDOWN_IMMEDIATE
- four flags instead of two: STRICT_FLAGS is new (patch 4),
and STRICT_BOUNDS is separate from STRICT_ZERO_SIZE (patch 5)
- various refactorings for more shared code and less duplication
Eric Blake (5):
api: Add xxx_MASK constant for each Flags type
generator: Refactor filtering of accepted OFlags
api: Add
2019 Oct 04
4
[PATCH libnbd 1/4] generator: Allow long ‘name - shortdesc’ in man pages.
For commands with long names and/or short descriptors, you can end up
going over 72 characters in the first line of the man page (causing
podwrapper to complain). Wrap these lines.
---
generator/generator | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/generator/generator b/generator/generator
index 7d3f656..ad1cb6b 100755
--- a/generator/generator
+++ b/generator/generator