* system calls-(query) @ 2004-07-06 8:00 Susheel Raj 2004-07-06 9:14 ` FabF 2004-07-06 9:24 ` Jan-Benedict Glaw 0 siblings, 2 replies; 3+ messages in thread From: Susheel Raj @ 2004-07-06 8:00 UTC (permalink / raw) To: linux-kernel i have been trying to understand how the system calls are being made by applications and how the kernel reacts to them...this is what i got into my brain.... when an application makes a system call ( for i386) %eax register is filled with the system call number and some other registers are to be given some appropriate values..for example ..if i amke an exit () system call.. then its system call number "1" is filled in %eax and the status code is filled in %ebx... so i want to know what are the requirements for other systems calls to execute ...what all registers they access..any documentation would be a great help.... ________________________________________________________________________ Yahoo! India Careers: Over 50,000 jobs online Go to: http://yahoo.naukri.com/ ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: system calls-(query) 2004-07-06 8:00 system calls-(query) Susheel Raj @ 2004-07-06 9:14 ` FabF 2004-07-06 9:24 ` Jan-Benedict Glaw 1 sibling, 0 replies; 3+ messages in thread From: FabF @ 2004-07-06 9:14 UTC (permalink / raw) To: Susheel Raj; +Cc: linux-kernel On Tue, 2004-07-06 at 10:00, Susheel Raj wrote: > i have been trying to understand how the system calls > are being made by applications and how the kernel > reacts to them...this is what i got into my brain.... > when an application makes a system call ( for i386) > %eax register is filled with the system call number > and some other registers are to be given some > appropriate values..for example ..if i amke an exit () > system call.. then its system call number "1" is > filled in %eax and the status code is filled in > %ebx... > > so i want to know what are the requirements for other > systems calls to execute ...what all registers they > access..any documentation would be a great help.... You missed the main point here.It does software interrupt using eax, ebx, ecx, edx, esi, edi in that order. C program: syscall (100, 0, 1, 2, 3, 4, 5, 6); Function call : 8048200: 6a 06 push $0x6 8048202: 6a 05 push $0x5 8048204: 6a 04 push $0x4 8048206: 6a 03 push $0x3 8048208: 6a 02 push $0x2 804820a: 6a 01 push $0x1 804820c: 6a 00 push $0x0 804820e: 6a 64 push $0x64 8048210: e8 1b 5d 00 00 call 804df30 <syscall> Syscall release : 804df33: 8b 7c 24 24 mov 0x24(%esp),%edi 804df37: 8b 74 24 20 mov 0x20(%esp),%esi 804df3b: 8b 54 24 1c mov 0x1c(%esp),%edx 804df3f: 8b 4c 24 18 mov 0x18(%esp),%ecx 804df43: 8b 5c 24 14 mov 0x14(%esp),%ebx 804df47: 8b 44 24 10 mov 0x10(%esp),%eax 804df4b: cd 80 int $0x80 (further args works with struct passing) Best regards, FabF ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: system calls-(query) 2004-07-06 8:00 system calls-(query) Susheel Raj 2004-07-06 9:14 ` FabF @ 2004-07-06 9:24 ` Jan-Benedict Glaw 1 sibling, 0 replies; 3+ messages in thread From: Jan-Benedict Glaw @ 2004-07-06 9:24 UTC (permalink / raw) To: linux-kernel [-- Attachment #1: Type: text/plain, Size: 1670 bytes --] On Tue, 2004-07-06 09:00:30 +0100, Susheel Raj <susheel_nuguru@yahoo.co.in> wrote in message <20040706080030.35778.qmail@web8310.mail.in.yahoo.com>: > i have been trying to understand how the system calls > are being made by applications and how the kernel > reacts to them...this is what i got into my brain.... > when an application makes a system call ( for i386) > %eax register is filled with the system call number > and some other registers are to be given some > appropriate values..for example ..if i amke an exit () > system call.. then its system call number "1" is > filled in %eax and the status code is filled in > %ebx... > > so i want to know what are the requirements for other > systems calls to execute ...what all registers they > access..any documentation would be a great help.... Userland has to place arguments where the kernel expects them. Have a look at ./linux/asm-$ARCH/unistd.h to see how syscalls can be made. You can think of the _syscallX() macros as the lowest-level "function" to get access to a system call slot. From there, the syscall is usually dispatched from entry.S. Syscalls trigger some kind of interrupt or exception; an exception handler then gets the system call number and dispatches it through the syscall function pointer's addresses in sys_call_table (in entry.S). MfG, JBG -- Jan-Benedict Glaw jbglaw@lug-owl.de . +49-172-7608481 "Eine Freie Meinung in einem Freien Kopf | Gegen Zensur | Gegen Krieg fuer einen Freien Staat voll Freier Bürger" | im Internet! | im Irak! ret = do_actions((curr | FREE_SPEECH) & ~(NEW_COPYRIGHT_LAW | DRM | TCPA)); [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2004-07-06 10:03 UTC | newest] Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2004-07-06 8:00 system calls-(query) Susheel Raj 2004-07-06 9:14 ` FabF 2004-07-06 9:24 ` Jan-Benedict Glaw
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®