style change for syscalls.master

Brooks Davis brooks at freebsd.org
Tue Oct 30 19:16:06 UTC 2018


I've posted a review and plan to commit tomorrow as this is blocking
further cleanups.

https://reviews.freebsd.org/D17706

-- Brooks

On Tue, Oct 09, 2018 at 10:18:26PM +0000, Brooks Davis wrote:
> 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
> ...
> 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
> ...
> 5	AUE_OPEN_RWTC	STD	{ 
> 		int open( 
> 		    _In_z_ char *path,  
> 		    int flags,  
> 		    int mode    
> 		);  
> 	}
> 
> 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.


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 455 bytes
Desc: not available
URL: <http://lists.freebsd.org/pipermail/freebsd-arch/attachments/20181030/fa41c9a1/attachment.sig>


More information about the freebsd-arch mailing list