Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 9 Oct 2018 22:18:26 +0000
From:      Brooks Davis <brooks@freebsd.org>
To:        freebsd-arch@freebsd.org
Subject:   style change for syscalls.master
Message-ID:  <20181009221826.GA75401@spindle.one-eyed-alien.net>

next in thread | raw e-mail | index | archive | help

--IS0zKkzwUGydFO0o
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

I have a patch (https://reviews.freebsd.org/D17488) that removes the
need for backslash line continuations in syscalls.master files with
the aim of making the files more readable.  Based on the functionality
in that patch, I'd like to propose changing the style of the file to
something better suited the long lines introduced by long type/variable
names and SAL annotations.  I'd also like it to be easier to diff
between the main syscalls.master and the freebsd32 version.  Longer
term, I hope to be able to generate freebsd32 files from the default
syscalls.master which will be aided by reducing diffs and making room
for more annotations.

To those ends, I propose a reformat along the lines of the examples below:

Old format:
1	AUE_EXIT	STD	{ void sys_exit(int rval); } exit \
				    sys_exit_args void
=2E..
5	AUE_OPEN_RWTC	STD	{ int open( \
				    _In_z_ char *path, \
				    int flags, \
				    int mode); }

New format:
1	AUE_EXIT	STD	{
		void sys_exit(
		     int rval
		);
	 } exit sys_exit_args void
=2E..
5	AUE_OPEN_RWTC	STD	{=20
		int open(=20
		    _In_z_ char *path, =20
		    int flags, =20
		    int mode   =20
		); =20
	}

For an example of where this makes diffs easier, consider preadv:

Old format:
289     AUE_PREADV      STD     { ssize_t preadv(int fd, \
				    _In_reads_(iovcnt) \
				    struct iovec *iovp, \
				    u_int iovcnt, off_t offset); }

New format:
289     AUE_PREADV      STD     {
		ssize_t preadv(
		    int fd,
		    _In_reads_(iovcnt) struct iovec *iovp,
		    u_int iovcnt,
		    off_t offset
		);
	 }

New format (freebsd32):
289     AUE_PREADV      STD     {
		ssize_t freebsd32_preadv(
		    int fd,
		    _In_reads_(iovcnt) struct iovec32 *iovp,
		    u_int iovcnt,
		    uint32_t offset1,
		    uint32_t offset2
		);
	 }


Some comments on this:
 - One-variable-per-line allows for annotations and is struct-like which
   is appropriate since this is more about declaring uap structs then
   about function declarations.
 - I chose the top level indent keep things readable without adding a
   blank between each syscall block.  I'd be happy to drop things back
   one tab if we'd rather have blanks between each declaration.
 - If one really cared about vertical space, one could combine the ");",
   "}", and alternative names, but I didn't find that very aesthetic.

I'd like to know if this would break any out-of-tree parsers.  If so,
we can easily keep backslashes, but I'd rather clear those out if
we're going to complicate svn blame for every line in the file.  Parsers
written in more sensible languages than the in-tree sh+sed+awk monster
seem likely to be easy to fix and I hope that a more stylized format
will be easier to handle with dumb parsers, but I'd like to hear if this
change would cause issues.

-- Brooks

P.S. I'd plan to make this change after the 12.0 branch, but would like
to reach concensus sooner as I'm working on yet-another-syscall vector
in my work tree and I'd like to use this there.

--IS0zKkzwUGydFO0o
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQEcBAEBAgAGBQJbvSkwAAoJEKzQXbSebgfA5dwIAIaOn+RGmwrlyNgiPHvF6AW9
0YjF0fgtIxKHzkH37F2iPJl62dxudK2dshsmCFmg5rP9bA5H+/9ovgrqWrzhvbAb
iRgMDVztuzNu0Yq3UUorD7qeRUAg1eTsNxHCVfei/DncYDgK+Ln3zn+AN+g+jkY1
i90kpmtTeGnHSTmwbD58DjHwOQTJz5jgmSqEHw2ShMxuae0VHEGuVwsX0sg6/XfE
yQO0eFg+UohJdC7QIe9JoYB0MBjcfCx9nC++CmUUcNUmBs3zXxQNjku8QGI7OJ3i
1BGDxP7WM4KqRE0xINfvt7dP1oNLq2Ry1USB5KIt0MFlYSEWM15AMOcRZZkNAMc=
=2kf+
-----END PGP SIGNATURE-----

--IS0zKkzwUGydFO0o--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20181009221826.GA75401>