X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=instrumentation%2Fsyscalls%2Fheaders%2Fsyscalls_pointers_override.h;h=0eb189eadb3918edebb3e1c5a02445ff4c9a8675;hb=2cdc2db77243b5091fac1f0cb4c2d5a84291fbb9;hp=4a69fc3e90c4a491da3bf2ee8afb9731e5d0de90;hpb=41a3cca2c7533c0e856f65c38808a8a9dd3a1e42;p=lttng-modules.git diff --git a/instrumentation/syscalls/headers/syscalls_pointers_override.h b/instrumentation/syscalls/headers/syscalls_pointers_override.h index 4a69fc3e..0eb189ea 100644 --- a/instrumentation/syscalls/headers/syscalls_pointers_override.h +++ b/instrumentation/syscalls/headers/syscalls_pointers_override.h @@ -100,9 +100,8 @@ SC_LTTNG_TRACEPOINT_EVENT(pipe2, } \ \ if (inp) { \ - tp_locvar->fds_in = kmalloc( \ - tp_locvar->nr_ulong * sizeof(unsigned long), \ - GFP_ATOMIC | GFP_NOWAIT); \ + tp_locvar->fds_in = lttng_tp_mempool_alloc( \ + tp_locvar->nr_ulong * sizeof(unsigned long)); \ if (!tp_locvar->fds_in) \ goto error; \ \ @@ -113,9 +112,8 @@ SC_LTTNG_TRACEPOINT_EVENT(pipe2, goto error; \ } \ if (outp) { \ - tp_locvar->fds_out = kmalloc( \ - tp_locvar->nr_ulong * sizeof(unsigned long), \ - GFP_ATOMIC | GFP_NOWAIT); \ + tp_locvar->fds_out = lttng_tp_mempool_alloc( \ + tp_locvar->nr_ulong * sizeof(unsigned long)); \ if (!tp_locvar->fds_out) \ goto error; \ \ @@ -126,9 +124,8 @@ SC_LTTNG_TRACEPOINT_EVENT(pipe2, goto error; \ } \ if (exp) { \ - tp_locvar->fds_ex = kmalloc( \ - tp_locvar->nr_ulong * sizeof(unsigned long), \ - GFP_ATOMIC | GFP_NOWAIT); \ + tp_locvar->fds_ex = lttng_tp_mempool_alloc( \ + tp_locvar->nr_ulong * sizeof(unsigned long)); \ if (!tp_locvar->fds_ex) \ goto error; \ \ @@ -221,11 +218,11 @@ end: ; /* Label at end of compound statement. */ \ ) #define LTTNG_SYSCALL_SELECT_code_post \ - kfree(tp_locvar->fds_in); \ - kfree(tp_locvar->fds_out); \ - kfree(tp_locvar->fds_ex); + lttng_tp_mempool_free(tp_locvar->fds_in); \ + lttng_tp_mempool_free(tp_locvar->fds_out); \ + lttng_tp_mempool_free(tp_locvar->fds_ex); -#if defined(CONFIG_X86_32) || defined(CONFIG_X86_64) +#if defined(CONFIG_X86_32) || defined(CONFIG_X86_64) || defined(CONFIG_ARM) #define OVERRIDE_32_select #define OVERRIDE_64_select SC_LTTNG_TRACEPOINT_EVENT_CODE(select, @@ -413,8 +410,7 @@ static struct lttng_type lttng_pollfd_elem = { { \ int err; \ \ - tp_locvar->fds = kmalloc(tp_locvar->alloc_fds, \ - GFP_ATOMIC | GFP_NOWAIT); \ + tp_locvar->fds = lttng_tp_mempool_alloc(tp_locvar->alloc_fds); \ if (!tp_locvar->fds) \ goto error; \ err = lib_ring_buffer_copy_from_user_check_nofault( \ @@ -494,9 +490,9 @@ end: \ ) #define LTTNG_SYSCALL_POLL_code_post \ - kfree(tp_locvar->fds); + lttng_tp_mempool_free(tp_locvar->fds); -#if defined(CONFIG_X86_32) || defined(CONFIG_X86_64) +#if defined(CONFIG_X86_32) || defined(CONFIG_X86_64) || defined(CONFIG_ARM) #define OVERRIDE_32_poll #define OVERRIDE_64_poll SC_LTTNG_TRACEPOINT_EVENT_CODE(poll, @@ -761,9 +757,8 @@ static struct lttng_type lttng_epoll_wait_elem = { tp_locvar->fds_length = ret; \ } \ \ - tp_locvar->events = kmalloc( \ - maxalloc * sizeof(struct epoll_event), \ - GFP_ATOMIC | GFP_NOWAIT); \ + tp_locvar->events = lttng_tp_mempool_alloc( \ + maxalloc * sizeof(struct epoll_event)); \ if (!tp_locvar->events) { \ tp_locvar->fds_length = 0; \ goto skip_code; \ @@ -805,11 +800,11 @@ static struct lttng_type lttng_epoll_wait_elem = { #define LTTNG_SYSCALL_EPOLL_WAIT_code_post \ sc_out( \ - kfree(tp_locvar->events); \ + lttng_tp_mempool_free(tp_locvar->events); \ ) -#if defined(CONFIG_X86_32) || defined(CONFIG_X86_64) +#if defined(CONFIG_X86_32) || defined(CONFIG_X86_64) || defined(CONFIG_ARM) #define OVERRIDE_32_epoll_wait #define OVERRIDE_64_epoll_wait SC_LTTNG_TRACEPOINT_EVENT_CODE(epoll_wait, @@ -871,4 +866,20 @@ SC_LTTNG_TRACEPOINT_EVENT_CODE(epoll_pwait, ) #endif /* defined(CONFIG_X86_32) || defined(CONFIG_X86_64) || defined(CONFIG_ARM64) || defined(CONFIG_ARM) */ +#if (defined(CONFIG_X86_64) && !defined(LTTNG_SC_COMPAT)) || defined(CONFIG_ARM64) || defined(CONFIG_ARM) +#define OVERRIDE_32_socketpair +#define OVERRIDE_64_socketpair +SC_LTTNG_TRACEPOINT_EVENT(socketpair, + TP_PROTO(sc_exit(long ret,) int family, int type, int protocol, int *usockvec), + TP_ARGS(sc_exit(ret,) family, type, protocol, usockvec), + TP_FIELDS( + sc_exit(ctf_integer(long, ret, ret)) + sc_in(ctf_integer(int, family, family)) + sc_in(ctf_integer(int, type, type)) + sc_in(ctf_integer(int, protocol, protocol)) + sc_out(ctf_user_array(int, socket, usockvec, 2)) + ) +) +#endif /* (defined(CONFIG_X86_64) && !defined(LTTNG_SC_COMPAT)) || defined(CONFIG_ARM64) || defined(CONFIG_ARM) */ + #endif /* CREATE_SYSCALL_TABLE */