Date: Sat, 11 May 2013 10:08:46 -0700 From: Alfred Perlstein <bright@mu.org> To: freebsd-hackers@freebsd.org Subject: Re: syscall to userland interface Message-ID: <518E7B1E.9050704@mu.org> In-Reply-To: <1368260611.67320.YahooMailNeo@web171505.mail.ir2.yahoo.com> References: <1368214284.29611.YahooMailNeo@web171503.mail.ir2.yahoo.com> <518D4C4F.90902@mu.org> <1368260611.67320.YahooMailNeo@web171505.mail.ir2.yahoo.com>
next in thread | previous in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?518E7B1E.9050704>