Re: getdirentries_args and other kernel syscall structures
From: Daniel Rudy (dr2867_at_pacbell.net)
Date: 11/23/05
- Previous message: Andrey Simonenko: "Re: a puzzle about FreeBSD"
- In reply to: rookie: "Re: getdirentries_args and other kernel syscall structures"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Date: Wed, 23 Nov 2005 09:32:09 -0800 To: rookie@gufi.org
At about the time of 11/23/2005 3:23 AM, rookie stated the following:
> 2005/11/23, Daniel Rudy <dr2867@pacbell.net>:
>
>>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
>
>
> It just pads in the right way (according with endianism) the structure
> to the right word. For example, x86 gots sizeof(long *) == 4. If you
> want to have a syscall structure like that:
>
> struct example_sys
> {
> char f;
> short p;
> int g;
> };
>
> it is misaligned. In order to get a proper padded structure (all 32
> bits entries) to speed-up accesses to the members, this little trick
> is used.
>
> Attilio
>
> --
> Peace can only be achieved by understanding - A. Einstein
>
Ah, a performance trick. I get it now. Thanks.
-- Daniel Rudy _______________________________________________ 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"
- Previous message: Andrey Simonenko: "Re: a puzzle about FreeBSD"
- In reply to: rookie: "Re: getdirentries_args and other kernel syscall structures"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Relevant Pages
|