Re: getdirentries_args and other kernel syscall structures

From: Stefan Farfeleder (stefan_at_fafoe.narf.at)
Date: 11/23/05

  • Next message: rookie: "Re: getdirentries_args and other kernel syscall structures"
    Date: Wed, 23 Nov 2005 12:11:46 +0100
    To: Daniel Rudy <dr2867@pacbell.net>
    
    

    On Tue, Nov 22, 2005 at 08:32:10PM -0800, Daniel Rudy wrote:
    >
    > Ok, I'va got a little question here. In the structure
    > getdirentries_args, there seems to be duplicated fields that I'm not
    > entirely sure what they do. Here's the definition of a structure
    > verbatim from sys/sysproto.h:
    >
    > struct getdirentries_args {
    > char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
    > char buf_l_[PADL_(char *)]; char * buf; char buf_r_[PADR_(char *)];
    > char count_l_[PADL_(u_int)]; u_int count; char
    > count_r_[PADR_(u_int)];
    > char basep_l_[PADL_(long *)]; long * basep; char
    > basep_r_[PADR_(long *)];
    > };
    >
    > Now my question is what does the l and r variables do? It seems that
    > they do something with padding the data based on the endian of the
    > machine? I look through this header file, and I see all the structures
    > have similar constructs. Is it something that can be safely ignored?

    This file is automatically generated by makesyscalls.sh. The l and r
    variables are a hack to correctly the member between them. One of PADL_
    or PADR_ always evalutes to 0, the other one to the needed padding,
    depending on the passed type. This is unfortunate because it relies on
    the GCC extension to accept 0-sized arrays. I'd love to fix that but
    couldn't come up with something that isn't very involved.

    Stefan
    _______________________________________________
    freebsd-hackers@freebsd.org mailing list
    http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
    To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.org"


  • Next message: rookie: "Re: getdirentries_args and other kernel syscall structures"