10 Aug, 2020

1 commit

  • To build host programs, you need to add the program names to 'hostprogs'
    to use the necessary build rule, but it is not enough to build them
    because there is no dependency.

    There are two types of host programs: built as the prerequisite of
    another (e.g. gen_crc32table in lib/Makefile), or always built when
    Kbuild visits the Makefile (e.g. genksyms in scripts/genksyms/Makefile).

    The latter is typical in Makefiles under scripts/, which contains host
    programs globally used during the kernel build. To build them, you need
    to add them to both 'hostprogs' and 'always-y'.

    This commit adds hostprogs-always-y as a shorthand.

    The same applies to user programs. net/bpfilter/Makefile builds
    bpfilter_umh on demand, hence always-y is unneeded. In contrast,
    programs under samples/ are added to both 'userprogs' and 'always-y'
    so they are always built when Kbuild visits the Makefiles.

    userprogs-always-y works as a shorthand.

    Signed-off-by: Masahiro Yamada
    Acked-by: Miguel Ojeda

    Masahiro Yamada
     

22 Jun, 2020

1 commit

  • This userspace program includes UAPI headers exported to usr/include/.
    'make headers' always works for the target architecture (i.e. the same
    architecture as the kernel), so the sample program should be built for
    the target as well. Kbuild now supports 'userprogs' for that.

    I also guarded the CONFIG option by 'depends on CC_CAN_LINK' because
    $(CC) may not provide libc.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     

19 May, 2020

1 commit

  • The sample program is run like:

    ./samples/watch_queue/watch_test

    and watches "/" for mount changes and the current session keyring for key
    changes:

    # keyctl add user a a @s
    1035096409
    # keyctl unlink 1035096409 @s

    producing:

    # ./watch_test
    read() = 16
    NOTIFY[000]: ty=000001 sy=02 i=00000110
    KEY 2ffc2e5d change=2[linked] aux=1035096409
    read() = 16
    NOTIFY[000]: ty=000001 sy=02 i=00000110
    KEY 2ffc2e5d change=3[unlinked] aux=1035096409

    Other events may be produced, such as with a failing disk:

    read() = 22
    NOTIFY[000]: ty=000003 sy=02 i=00000416
    USB 3-7.7 dev-reset e=0 r=0
    read() = 24
    NOTIFY[000]: ty=000002 sy=06 i=00000418
    BLOCK 00800050 e=6[critical medium] s=64000ef8

    This corresponds to:

    blk_update_request: critical medium error, dev sdf, sector 1677725432 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0

    in dmesg.

    Signed-off-by: David Howells

    David Howells