On Sat, Jun 10, 2017 at 03:32:41PM +0900, Masatake YAMATO wrote: > Netlink GENERIC protocol allows a process to talk with a subsystem of > Linux kernel specified by its name(family name); the process asks the > id(family id)for the name first, then talks to the subsystem with the > id. The id is defined at run-time, when the subsystem is > registered. Therefore strace cannot make a table mapping from a family > id to its family name in build-time. > > These change sets are for decoding family ids. > strace gets the mapping and makes the table at run-time. > > Following case is not considered yet. > The target process it self can ask registering a subsystem not > registered yet to Linux kernel. When strace detects such action of the > target process, strace should extend the table for decoding the family id > of the newly registered subsystem. > > Masatake YAMATO (6): > socketeutils: extend receive_responses() to handle other type than > SOCK_DIAG_BY_FAMILY communication > socketeutils: allow to pass a user data to the callback function of > receive_responses() > dyxlat: building xlat dynamically > socketutils: build a xlat table dynamically for decoding "family" > field of Netlink GENERIC protocol > netlink: decode "family" field of Netlink GENERIC protocol > tests: add check for decoding family field of netlink GENERIC protocol > > Makefile.am | 1 + > defs.h | 10 ++++ > dyxlat.c | 120 +++++++++++++++++++++++++++++++++++++++ > netlink.c | 10 +++- > socketutils.c | 134 > +++++++++++++++++++++++++++++++++++++++----- > tests/.gitignore | 1 + > tests/gen_tests.in | 1 + > tests/netlink_generic.c | 78 ++++++++++++++++++++++++++ > tests/pure_executables.list | 1 + > 9 files changed, 338 insertions(+), 18 deletions(-) > create mode 100644 dyxlat.c > create mode 100644 tests/netlink_generic.c
Great! Could you fix the following formatting issues reported by kernel's checkpatch.pl script, please? $ kernel/scripts/checkpatch.pl 0001-socketeutils-extend-receive_responses-to-handle-othe.patch WARNING: line over 80 characters #51: FILE: socketutils.c:400: + && receive_responses(fd, inode, SOCK_DIAG_BY_FAMILY, "UNIX", unix_parse_response) WARNING: line over 80 characters #60: FILE: socketutils.c:409: + && receive_responses(fd, inode, SOCK_DIAG_BY_FAMILY, proto_name, inet_parse_response) $ kernel/scripts/checkpatch.pl 0002-socketeutils-allow-to-pass-a-user-data-to-the-callba.patch WARNING: line over 80 characters #40: FILE: socketutils.c:138: + const int data_len, const unsigned long inode, void *user_data) WARNING: Unnecessary space before function pointer name #54: FILE: socketutils.c:195: + int (* parser) (const void *, WARNING: Unnecessary space before function pointer arguments #54: FILE: socketutils.c:195: + int (* parser) (const void *, WARNING: line over 80 characters #103: FILE: socketutils.c:405: + && receive_responses(fd, inode, SOCK_DIAG_BY_FAMILY, (void *)"UNIX", unix_parse_response) WARNING: line over 80 characters #112: FILE: socketutils.c:414: + && receive_responses(fd, inode, SOCK_DIAG_BY_FAMILY, (void *)proto_name, inet_parse_response) WARNING: line over 80 characters #121: FILE: socketutils.c:446: + && receive_responses(fd, inode, SOCK_DIAG_BY_FAMILY, (void *)"NETLINK", $ kernel/scripts/checkpatch.pl 0003-dyxlat-building-xlat-dynamically.patch WARNING: space prohibited between function name and open parenthesis '(' #53: FILE: defs.h:1024: +struct dyxlat *dyxlat_new (int allocation); WARNING: space prohibited between function name and open parenthesis '(' #54: FILE: defs.h:1025: +void dyxlat_delete (struct dyxlat *dyxlat); WARNING: space prohibited between function name and open parenthesis '(' #55: FILE: defs.h:1026: +struct xlat *dyxlat_get (struct dyxlat *dyxlat); WARNING: space prohibited between function name and open parenthesis '(' #56: FILE: defs.h:1027: +void dyxlat_may_add_pair (struct dyxlat *dyxlat, uint64_t val, const char *str); ERROR: spaces required around that '?' (ctx:VxW) #108: FILE: dyxlat.c:45: + dyxlat->allocated = allocation? allocation: 10; ERROR: spaces required around that ':' (ctx:VxW) #108: FILE: dyxlat.c:45: + dyxlat->allocated = allocation? allocation: 10; ERROR: space required before the open parenthesis '(' #155: FILE: dyxlat.c:92: + if(dyxlat->used == dyxlat->allocated) { ERROR: space prohibited before open square bracket '[' #161: FILE: dyxlat.c:98: + dyxlat->xlat [dyxlat->used - 2].val = val; ERROR: space prohibited before open square bracket '[' #162: FILE: dyxlat.c:99: + dyxlat->xlat [dyxlat->used - 2].str = xstrdup(str); ERROR: space prohibited before open square bracket '[' #172: FILE: dyxlat.c:109: + if (dyxlat->xlat [i].val == val) { ERROR: space prohibited before open square bracket '[' #173: FILE: dyxlat.c:110: + if (strcmp(dyxlat->xlat [i].str, str) == 0) WARNING: else is not generally useful after a break or return #175: FILE: dyxlat.c:112: + return; + else { ERROR: space prohibited before open square bracket '[' #176: FILE: dyxlat.c:113: + free((void *)(dyxlat->xlat [i].str)); ERROR: space prohibited before open square bracket '[' #177: FILE: dyxlat.c:114: + dyxlat->xlat [i].str = xstrdup(str); $ kernel/scripts/checkpatch.pl 0004-socketutils-build-a-xlat-table-dynamically-for-decod.patch WARNING: space prohibited between function name and open parenthesis '(' #113: FILE: socketutils.c:610: + dyxlat_may_add_pair (dyxlat, id, name); WARNING: space prohibited between function name and open parenthesis '(' #115: FILE: socketutils.c:612: + free (name); WARNING: labels should not be indented #142: FILE: socketutils.c:639: + out: $ kernel/scripts/checkpatch.pl 0005-netlink-decode-family-field-of-Netlink-GENERIC-proto.patch ERROR: "foo * bar" should be "foo *bar" #37: FILE: netlink.c:104: + const struct xlat * xlat; ERROR: space prohibited before open square bracket '[' #55: FILE: netlink.c:123: + if (!nlmsg_types [NETLINK_GENERIC].xlat) ERROR: space prohibited before open square bracket '[' #56: FILE: netlink.c:124: + nlmsg_types [NETLINK_GENERIC].xlat = genl_families_xlat(); $ kernel/scripts/checkpatch.pl 0006-tests-add-check-for-decoding-family-field-of-netlink.patch WARNING: Block comments use * on subsequent lines #92: FILE: tests/netlink_generic.c:41: + /* Though GENL_ID_CTRL is statically given in this test case, + strace doesn't have knowledge that the human readable name WARNING: Block comments use a trailing */ on a separate line #95: FILE: tests/netlink_generic.c:44: + from run-time environment. */ -- ldv
signature.asc
Description: PGP signature
------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________ Strace-devel mailing list Strace-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/strace-devel