syscall to userland interface
Alfred Perlstein
bright at mu.org
Sat May 11 17:09:09 UTC 2013
On 5/11/13 1:23 AM, Karl Dreger wrote:
>
> I am feeling rather stupid at the moment, but I can't find the assembler
>
> files that you are referring to. Do you mean that every syscall under
>
> sys/kern/*.c has a corresponding .S file in src/lib/libc/?
Nope, the .S files are under the object directory:
> When you build the system a whole bunch of assembler files are
> automatically generated that define the functions you are looking for.
>
> Look for .S files under the object directory.
>
> Those assembler files have the magic to cause a system call to happen.
>
> example: src/lib/libc/getauid.S (note, this file is GENERATED, it's not
> part of src.)
>
>
> The actual transition from user to kernelland and back probably takes
>
> place via the assembler routines in sys/i386/i386. Most notably exception.s
>
> for my i386 cpu.
>
>
> What my question boils down to is this: when running fork and friends
>
> from userland they are invoked as:
>
> fork();, open();, read();, close(); ...
>
>
> but are defined as:
>
> sys_fork(), sys_open(), sys_read(), sys_close(), ...
>
> in their actual c definition.
>
> If the assembler files that you spoke about answer this discrepancy,
>
> then the reason why the penny hasn't dropped yet is because I haven't
> found them.
>
>
Again, they are generated as part of build. You will NOT find them
during a checkout.
-Alfred
More information about the freebsd-hackers
mailing list