Message ID | 20210126161209.1086179-1-tz.stoyanov@gmail.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 4b05ae03b8c33eba1ec984f4e7c0e541cd956495 |
Headers | show |
Series | libtracefs: Add missing system includes | expand |
On Tue, Jan 26, 2021 at 6:43 PM Sameeruddin Shaik <sameeruddin.shaik8@gmail.com> wrote: > > > The following is the error, which we will get if the above patch is not applied > > ---------------------------- > sameeraaron@sameeraaron-Lenovo-Z50-70:~/hobbies/libtracefs$ sudo make install > COMPILE FPIC tracefs-utils.o > COMPILE FPIC tracefs-instance.o > COMPILE FPIC tracefs-events.o > COMPILE FPIC tracefs-tools.o > BUILD STATIC LIB libtracefs.a > COMPILE SHARED LIB libtracefs.so.1.0.2 > INSTALL /home/sameeraaron/hobbies/libtracefs/libtracefs.pc to /usr/local/lib/x86_64-linux-gnu/pkgconfig > INSTALL /home/sameeraaron/hobbies/libtracefs/lib/tracefs/libtracefs.so.1.0.2 to /usr/local/lib64 > INSTALL /home/sameeraaron/hobbies/libtracefs/include/tracefs.h to /usr/local/include/tracefs > INSTALL trace.conf to /etc/ld.so.conf.d/ > /bin/sh: 1: /home/sameeraaron/hobbies/libtracefs/test: not found > /etc/ld.so.conf.d//trace.conf:/usr/local/lib64 > /etc/ld.so.conf.d//trace.conf:/usr/local/lib64 > /etc/ld.so.conf.d//trace.conf:/usr/local/lib64 > /etc/ld.so.conf.d//trace.conf:/usr/local/lib64 > /etc/ld.so.conf.d//trace.conf:/usr/local/lib64 > /etc/ld.so.conf.d//trace.conf:/usr/local/lib64 > /etc/ld.so.conf.d//trace.conf:/usr/local/lib64 > /etc/ld.so.conf.d//trace.conf:/usr/local/lib64 > /etc/ld.so.conf.d//trace.conf:/usr/local/lib64 > In file included from /home/sameeraaron/hobbies/libtracefs/test.c:1:0: > /usr/local/include/tracefs/tracefs.h: In function ‘tracefs_trace_on_get_fd’: > /usr/local/include/tracefs/tracefs.h:58:60: error: ‘O_RDWR’ undeclared (first use in this function) > return tracefs_instance_file_open(instance, "tracing_on", O_RDWR); > ^ > /usr/local/include/tracefs/tracefs.h:58:60: note: each undeclared identifier is reported only once for each function it appears in > ------------------------------------------- > > Tzvetomir Stoyanov, > > I have one small doubt, > > standard headers are not included in --<tracefs.h>-- file, but they are included > in the file where the tracefs_instance_file_open() function is defined, will it won't be suffice? > > With your patch, above error is vanished, i tested it. Thank you for testing the patch :) The problem is that tracefs_trace_on_get_fd() API is implemented as inline in the header file, It is not a good practice to force the library users to add such indirect includes. As tracefs.h requires these system headers, it should include them implicitly. > > Thanks, > sameer. > > On Tue, Jan 26, 2021 at 9:44 PM Tzvetomir Stoyanov (VMware) <tz.stoyanov@gmail.com> wrote: >> >> Some libtracefs APIs use defines from Linux system headers. These >> headers are not included in the tracefs library main header file, which >> causes compilation errors when these APIs are used and the required >> system headers are not included explicitly by the caller. >> >> Reported-by: Yordan Karadzhov (VMware) <y.karadz@gmail.com> >> Signed-off-by: Tzvetomir Stoyanov (VMware) <tz.stoyanov@gmail.com> >> --- >> include/tracefs.h | 4 +++- >> 1 file changed, 3 insertions(+), 1 deletion(-) >> >> diff --git a/include/tracefs.h b/include/tracefs.h >> index 3059dbb..f3eec62 100644 >> --- a/include/tracefs.h >> +++ b/include/tracefs.h >> @@ -6,8 +6,10 @@ >> #ifndef _TRACE_FS_H >> #define _TRACE_FS_H >> >> -#include <traceevent/event-parse.h> >> +#include <sys/stat.h> >> +#include <fcntl.h> >> #include <sched.h> >> +#include <traceevent/event-parse.h> >> >> char *tracefs_get_tracing_file(const char *name); >> void tracefs_put_tracing_file(char *name); >> -- >> 2.29.2 >>
diff --git a/include/tracefs.h b/include/tracefs.h index 3059dbb..f3eec62 100644 --- a/include/tracefs.h +++ b/include/tracefs.h @@ -6,8 +6,10 @@ #ifndef _TRACE_FS_H #define _TRACE_FS_H -#include <traceevent/event-parse.h> +#include <sys/stat.h> +#include <fcntl.h> #include <sched.h> +#include <traceevent/event-parse.h> char *tracefs_get_tracing_file(const char *name); void tracefs_put_tracing_file(char *name);
Some libtracefs APIs use defines from Linux system headers. These headers are not included in the tracefs library main header file, which causes compilation errors when these APIs are used and the required system headers are not included explicitly by the caller. Reported-by: Yordan Karadzhov (VMware) <y.karadz@gmail.com> Signed-off-by: Tzvetomir Stoyanov (VMware) <tz.stoyanov@gmail.com> --- include/tracefs.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)