Messages in this thread | | | Subject | Re: [PATCH 05/23] selftest: vm: add unlikely() to BUG_ON() | From | Dmitry Safonov <> | Date | Fri, 31 Aug 2018 00:04:21 +0100 |
| |
On Thu, 2018-08-30 at 23:57 +0100, Dmitry Safonov wrote: > Hi Igor, > > On Fri, 2018-08-31 at 01:34 +0300, Igor Stoppa wrote: > > BUG_ON() is unlikely() to BUG() > > This selftest runs in userspace.. > So, we should define the macro somehow, as i.e: > rseq/rseq.h:#define rseq_unlikely(x) __builtin_expect(!!(x), 0) > > Otherwise, > [selftests]$ make vm/map_populate > cc vm/map_populate.c -o vm/map_populate > vm/map_populate.c: In function ‘parent_f’: > vm/map_populate.c:26:7: warning: implicit declaration of function > ‘unlikely’; did you mean ‘unlinkat’? [-Wimplicit-function- > declaration] > if (unlikely(condition)) { \ > ^ > vm/map_populate.c:38:2: note: in expansion of macro ‘BUG_ON’ > BUG_ON(ret <= 0, "read(sock)"); > ^~~~~~ > /tmp/cc7evGVG.o: In function `parent_f': > map_populate.c:(.text+0x3d): undefined reference to `unlikely' > map_populate.c:(.text+0xbb): undefined reference to `unlikely' > map_populate.c:(.text+0x135): undefined reference to `unlikely' > map_populate.c:(.text+0x1b0): undefined reference to `unlikely' > > Not sure if we care for this at all for userspace test. > I don't mind as it runs each time by kbuild robot and cumulatively > may > save something. But it's better be at least compile-tested.
JFI, there are a plenty of definitions for unlikely(): [linux]$ git grep 'define unlikely' tools +rseq_unlikely() from tools/testing/selftests/rseq/rseq.h
Probably, the one from "tools/include/linux/compiler.h" can be used in tools directory.
-- Dima
| |