Recently, I'm tracing the io_uring in Linux kernel. I found a function trace_io_uring_submit_sqe was called in io_uring.c. Through searching symbol on Github mirror repository or on elixir.bootlin, I can't found the definition of its. Are there any other way to find it or it just doesn't exist?
Where is the function: trace_io_uring_submit_sqe in Linux kernel?
300 Views Asked by Steven At
1
There are 1 best solutions below
Related Questions in LINUX-KERNEL
- Android kernel error: undefined reference to `get_hw_version_platform'
- Is there a need for BPF Linux namespace?
- Facing fatal errors while running "yum update" command on CentOS 7/Cloudlinux 7
- crash utility itself crashes while decoding kdump generated from null pointer dereference in kernel module
- How to compile the Linux kernel with -O0 for more detailed debug?
- Linux support for parallel Pixel data Image sensor
- Can't upgrade to newest version of linux-image-6.5.0-26-generic
- How to protect a page so that it cannot be write in mips arch?
- How to extract the .img file into normal kernel source file in the linux?
- Storage size of struct hash_desc desc; isn't known
- How can I intercept failed file openning calls?
- struct nameidata-Linux Kernel Module
- How to modify a 'struct msghdr' in Linux Kernel Module?
- How to allocate 500MB+ physically contiguous memory in a Linux kernel module and copy data to that memory from a userspace process?
- Hyper Threading: nosmt in grub configuration
Related Questions in IO-URING
- Writes in io_uring do not advance the file offset
- How to synchronize threads with io_uring?
- How does io_uring fulfill asynchronus read/writes?
- Is minComplete necessary for io_uring network driver?
- How linux io_uring store pointers to cqe buffers of processes?
- is io_uring advisable for the tun interface?
- How to guarantee that the io_uring completion queue never overflows?
- Unable to write file with io_uring in kernel 5.4 (always returns EINVAL)
- Strange EOPNOTSUPP return from io_uring O_DIRECT read after write if newly created file
- Is epoll a better API than io_uring?
- Why is liburing write performance lower than expected?
- IoUring with batch submission decrease the throughput
- Read at position relative to end of the file via IoUring
- io_uring: What is the use case for flag IORING_REGISTER_FILES_SKIP
- liburing: io_uring_submit() causes error when placed in await_suspend
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
This symbol is created dynamically using a macro, that's why you can't find it in the sources.
The file trace/events/io_uring.h is included on line 84, and it contains this usage of macro
TRACE_EVENT:The
TRACE_EVENTmacro is defined in linux/tracepoint.h using another macro,DECLARE_TRACE.DECLARE_TRACEis defined in the same file on line 418 and uses__DECLARE_TRACEwhich is defined in the same file again, on line 241 or 341 depending on the value of the macroTRACEPOINTS_ENABLEDon line 162.The
__DECLARE_TRACEmacro begins with:This line specifically:
expands into a declaration of a
static inline voidfunction whose name is thenamepassed down fromTRACE_EVENTwith a prefixtrace_prepended to it (##is used for string concatenation in macros), which in your case results in a name oftrace_io_uring_submit_sqe.Here you may find documentation of tracing.
How to recognize dynamic code generation using macros?
If you look throughout the
io_uring.cfile you will find a few functions with names following the formula oftrace_ + some_function. At the same time, none of them can be found in the source code. This often means these symbols are generated using a macro. In such cases you could try looking for the common prefix instead of the whole symbol. If you search fortrace_on github you will find multiple similar macros which could have given you an idea of what is happening.