Commit 49f550ea authored by Namhyung Kim's avatar Namhyung Kim Committed by Arnaldo Carvalho de Melo
Browse files

perf tools: Add file-handle feature test



The file handle (FHANDLE) support is configurable so some systems might not
have it.  So add a config feature item to check it on build time so that we
don't add the cgroup tracking feature based on that.

Committer notes:

Had to make the test use the same construct as its later use in
synthetic-events.c, in the next patch in this series. i.e. make it be:

	struct {
		struct file_handle fh;
		uint64_t cgroup_id;
	} handle;

To cope with:

    CC       /tmp/build/perf/util/cloexec.o
  util/synthetic-events.c:428:22: error: field 'fh' with   CC       /tmp/build/perf/util/call-path.o
  variable sized type 'struct file_handle' not at the end of a struct or class is a GNU
        extension [-Werror,-Wgnu-variable-sized-type-not-at-end]
                  struct file_handle fh;
                                     ^
  1 error generated.

Deal with this at some point, i.e. investigate if the right thing is to
remove that -Wgnu-variable-sized-type-not-at-end from our CFLAGS, for
now do the test the same way as it is used looks more sensible.

Reported-by: default avatarArnaldo Carvalho de Melo <acme@kernel.org>
Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lore.kernel.org/lkml/20200402015249.3800462-1-namhyung@kernel.org


[ split from a larger patch, removed blank line at EOF ]
Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 460c3ed9
Loading
Loading
Loading
Loading
+2 −1
Original line number Original line Diff line number Diff line
@@ -72,7 +72,8 @@ FEATURE_TESTS_BASIC := \
        setns				\
        setns				\
        libaio				\
        libaio				\
        libzstd				\
        libzstd				\
        disassembler-four-args
        disassembler-four-args		\
        file-handle


# FEATURE_TESTS_BASIC + FEATURE_TESTS_EXTRA is the complete list
# FEATURE_TESTS_BASIC + FEATURE_TESTS_EXTRA is the complete list
# of all feature tests
# of all feature tests
+5 −1
Original line number Original line Diff line number Diff line
@@ -67,7 +67,8 @@ FILES= \
         test-llvm.bin				\
         test-llvm.bin				\
         test-llvm-version.bin			\
         test-llvm-version.bin			\
         test-libaio.bin			\
         test-libaio.bin			\
         test-libzstd.bin
         test-libzstd.bin			\
         test-file-handle.bin


FILES := $(addprefix $(OUTPUT),$(FILES))
FILES := $(addprefix $(OUTPUT),$(FILES))


@@ -321,6 +322,9 @@ $(OUTPUT)test-libaio.bin:
$(OUTPUT)test-libzstd.bin:
$(OUTPUT)test-libzstd.bin:
	$(BUILD) -lzstd
	$(BUILD) -lzstd


$(OUTPUT)test-file-handle.bin:
	$(BUILD)

###############################
###############################


clean:
clean:
+17 −0
Original line number Original line Diff line number Diff line
#define _GNU_SOURCE
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <inttypes.h>

int main(void)
{
	struct {
		struct file_handle fh;
		uint64_t cgroup_id;
	} handle;
	int mount_id;

	name_to_handle_at(AT_FDCWD, "/", &handle.fh, &mount_id, 0);
	return 0;
}
+4 −0
Original line number Original line Diff line number Diff line
@@ -348,6 +348,10 @@ ifeq ($(feature-gettid), 1)
  CFLAGS += -DHAVE_GETTID
  CFLAGS += -DHAVE_GETTID
endif
endif


ifeq ($(feature-file-handle), 1)
  CFLAGS += -DHAVE_FILE_HANDLE
endif

ifdef NO_LIBELF
ifdef NO_LIBELF
  NO_DWARF := 1
  NO_DWARF := 1
  NO_DEMANGLE := 1
  NO_DEMANGLE := 1