Thread (42 messages) 42 messages, 7 authors, 2024-07-02

Re: [PATCH 06/12] uprobes: add batch uprobe register/unregister APIs

From: Andrii Nakryiko <hidden>
Date: 2024-06-27 16:47:22
Also in: bpf

On Thu, Jun 27, 2024 at 6:04 AM Masami Hiramatsu [off-list ref] wrote:
On Mon, 24 Jun 2024 17:21:38 -0700
Andrii Nakryiko [off-list ref] wrote:
quoted
-static int __uprobe_register(struct inode *inode, loff_t offset,
-                          loff_t ref_ctr_offset, struct uprobe_consumer *uc)
+int uprobe_register_batch(struct inode *inode, int cnt,
+                       uprobe_consumer_fn get_uprobe_consumer, void *ctx)
Is this interface just for avoiding memory allocation? Can't we just
allocate a temporary array of *uprobe_consumer instead?
Yes, exactly, to avoid the need for allocating another array that
would just contain pointers to uprobe_consumer. Consumers would never
just have an array of `struct uprobe_consumer *`, because
uprobe_consumer struct is embedded in some other struct, so the array
interface isn't the most convenient.

If you feel strongly, I can do an array, but this necessitates
allocating an extra array *and keeping it* for the entire duration of
BPF multi-uprobe link (attachment) existence, so it feels like a
waste. This is because we don't want to do anything that can fail in
the detachment logic (so no temporary array allocation there).

Anyways, let me know how you feel about keeping this callback.
Thank you,

--
Masami Hiramatsu (Google) [off-list ref]
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help