Syscall



En informatique, un appel système (en anglais, system call, abrégé en syscall) est une fonction primitive fournie par le noyau d'un système d'exploitation et utilisée par les programmes s'exécutant dans l'espace utilisateur (en d'autres termes, tous les processus distincts du noyau). Ce système permet de contrôler de façon sécurisée les applications dans l'espace utilisateur.

Le rôle du noyau est de gérer les ressources matérielles (il contient des pilotes de périphériques) et de fournir aux programmes une interface uniforme pour l'accès à ces ressources.


Source:http://fr.wikipedia.org/wiki/Appel_syst%C3%A8me


Nous allons voir l'utilisation des ressources syscall en assembleur avec le Raspberry.


L'appel à la fonction se fait via une interruption software. Plus précisément swi #0.

Les registres permettent de passer les arguments et de transmettre les informations de retour:


Registre

Fonction

R7

Numéros de la fonction.

R0

Paramètre 1 de la fonction

R1

Paramètre 2 de la fonction

R2

Paramètre 3 de la fonction

R3

Paramètre 4 de la fonction

R4

Paramètre 5 de la fonction

R0

Valeur de retour ou code erreur


Voici le Tableau des Fonctions:


R7NomSource R0R1R2R3R4
1sys_exitkernel/exit.c int----
2sys_forkarch/i386/kernel/process.c struct pt_regs----
3sys_readfs/read_write.c unsigned intchar *size_t--
4sys_writefs/read_write.c unsigned intconst char *size_t--
5sys_openfs/open.c const char *intint--
6sys_closefs/open.c unsigned int----
7sys_waitpidkernel/exit.c pid_tunsigned int *int--
8sys_creatfs/open.c const char *int---
9sys_linkfs/namei.c const char *const char *---
10sys_unlinkfs/namei.c const char *----
11sys_execvearch/i386/kernel/process.c struct pt_regs----
12sys_chdirfs/open.c const char *----
13sys_timekernel/time.c int *----
14sys_mknodfs/namei.c const char *intdev_t--
15sys_chmodfs/open.c const char *mode_t---
16sys_lchownfs/open.c const char *uid_tgid_t--
18sys_statfs/stat.c char *struct __old_kernel_stat *---
19sys_lseekfs/read_write.c unsigned intoff_tunsigned int--
20sys_getpidkernel/sched.c -----
21sys_mountfs/super.c char *char *char *--
22sys_oldumountfs/super.c char *----
23sys_setuidkernel/sys.c uid_t----
24sys_getuidkernel/sched.c -----
25sys_stimekernel/time.c int *----
26sys_ptracearch/i386/kernel/ptrace.c longlonglonglong-
27sys_alarmkernel/sched.c unsigned int----
28sys_fstatfs/stat.c unsigned intstruct __old_kernel_stat *---
29sys_pausearch/i386/kernel/sys_i386.c -----
30sys_utimefs/open.c char *struct utimbuf *---
33sys_accessfs/open.c const char *int---
34sys_nicekernel/sched.c int----
36sys_syncfs/buffer.c -----
37sys_killkernel/signal.c intint---
38sys_renamefs/namei.c const char *const char *---
39sys_mkdirfs/namei.c const char *int---
40sys_rmdirfs/namei.c const char *----
41sys_dupfs/fcntl.c unsigned int----
42sys_pipearch/i386/kernel/sys_i386.c unsigned long *----
43sys_timeskernel/sys.c struct tms *----
45sys_brkmm/mmap.c unsigned long----
46sys_setgidkernel/sys.c gid_t----
47sys_getgidkernel/sched.c -----
48sys_signalkernel/signal.c int__sighandler_t---
49sys_geteuidkernel/sched.c -----
50sys_getegidkernel/sched.c -----
51sys_acctkernel/acct.c const char *----
52sys_umountfs/super.c char *int---
54sys_ioctlfs/ioctl.c unsigned intunsigned intunsigned long--
55sys_fcntlfs/fcntl.c unsigned intunsigned intunsigned long--
57sys_setpgidkernel/sys.c pid_tpid_t---
59sys_oldunamearch/i386/kernel/sys_i386.c struct oldold_utsname *----
60sys_umaskkernel/sys.c int----
61sys_chrootfs/open.c const char *----
62sys_ustatfs/super.c dev_tstruct ustat *---
63sys_dup2fs/fcntl.c unsigned intunsigned int---
64sys_getppidkernel/sched.c -----
65sys_getpgrpkernel/sys.c -----
66sys_setsidkernel/sys.c -----
67sys_sigactionarch/i386/kernel/signal.c intconst struct old_sigaction *struct old_sigaction *--
68sys_sgetmaskkernel/signal.c -----
69sys_ssetmaskkernel/signal.c int----
70sys_setreuidkernel/sys.c uid_tuid_t---
71sys_setregidkernel/sys.c gid_tgid_t---
72sys_sigsuspendarch/i386/kernel/signal.c intintold_sigset_t--
73sys_sigpendingkernel/signal.c old_sigset_t *----
74sys_sethostnamekernel/sys.c char *int---
75sys_setrlimitkernel/sys.c unsigned intstruct rlimit *---
76sys_getrlimitkernel/sys.c unsigned intstruct rlimit *---
77sys_getrusagekernel/sys.c intstruct rusage *---
78sys_gettimeofdaykernel/time.c struct timeval *struct timezone *---
79sys_settimeofdaykernel/time.c struct timeval *struct timezone *---
80sys_getgroupskernel/sys.c intgid_t *---
81sys_setgroupskernel/sys.c intgid_t *---
82old_selectarch/i386/kernel/sys_i386.c struct sel_arg_struct *----
83sys_symlinkfs/namei.c const char *const char *---
84sys_lstatfs/stat.c char *struct __old_kernel_stat *---
85sys_readlinkfs/stat.c const char *char *int--
86sys_uselibfs/exec.c const char *----
87sys_swaponmm/swapfile.c const char *int---
88sys_rebootkernel/sys.c intintintvoid *-
89old_readdirfs/readdir.c unsigned intvoid *unsigned int--
90old_mmaparch/i386/kernel/sys_i386.c struct mmap_arg_struct *----
91sys_munmapmm/mmap.c unsigned longsize_t---
92sys_truncatefs/open.c const char *unsigned long---
93sys_ftruncatefs/open.c unsigned intunsigned long---
94sys_fchmodfs/open.c unsigned intmode_t---
95sys_fchownfs/open.c unsigned intuid_tgid_t--
96sys_getprioritykernel/sys.c intint---
97sys_setprioritykernel/sys.c intintint--
99sys_statfsfs/open.c const char *struct statfs *---
100sys_fstatfsfs/open.c unsigned intstruct statfs *---
101sys_iopermarch/i386/kernel/ioport.c unsigned longunsigned longint--
102sys_socketcallnet/socket.c intunsigned long *---
103sys_syslogkernel/printk.c intchar *int--
104sys_setitimerkernel/itimer.c intstruct itimerval *struct itimerval *--
105sys_getitimerkernel/itimer.c intstruct itimerval *---
106sys_newstatfs/stat.c char *struct stat *---
107sys_newlstatfs/stat.c char *struct stat *---
108sys_newfstatfs/stat.c unsigned intstruct stat *---
109sys_unamearch/i386/kernel/sys_i386.c struct old_utsname *----
110sys_ioplarch/i386/kernel/ioport.c unsigned long----
111sys_vhangupfs/open.c -----
112sys_idlearch/i386/kernel/process.c -----
113sys_vm86oldarch/i386/kernel/vm86.c unsigned longstruct vm86plus_struct *---
114sys_wait4kernel/exit.c pid_tunsigned long *int optionsstruct rusage *-
115sys_swapoffmm/swapfile.c const char *----
116sys_sysinfokernel/info.c struct sysinfo *----
117sys_ipc arch/i386/kernel/sys_i386.c uintintintintvoid *
118sys_fsyncfs/buffer.c unsigned int----
119sys_sigreturnarch/i386/kernel/signal.c unsigned long----
120sys_clonearch/i386/kernel/process.c struct pt_regs----
121sys_setdomainnamekernel/sys.c char *int---
122sys_newunamekernel/sys.c struct new_utsname *----
123sys_modify_ldtarch/i386/kernel/ldt.c intvoid *unsigned long--
124sys_adjtimexkernel/time.c struct timex *----
125sys_mprotectmm/mprotect.c unsigned longsize_tunsigned long--
126sys_sigprocmaskkernel/signal.c intold_sigset_t *old_sigset_t *--
127sys_create_modulekernel/module.c const char *size_t---
128sys_init_modulekernel/module.c const char *struct module *---
129sys_delete_modulekernel/module.c const char *----
130sys_get_kernel_symskernel/module.c struct kernel_sym *----
131sys_quotactlfs/dquot.c intconst char *intcaddr_t-
132sys_getpgidkernel/sys.c pid_t----
133sys_fchdirfs/open.c unsigned int----
134sys_bdflushfs/buffer.c intlong---
135sys_sysfsfs/super.c intunsigned longunsigned long--
136sys_personalitykernel/exec_domain.c unsigned long----
138sys_setfsuidkernel/sys.c uid_t----
139sys_setfsgidkernel/sys.c gid_t----
140sys_llseekfs/read_write.c unsigned intunsigned longunsigned longloff_t *unsigned int
141sys_getdentsfs/readdir.c unsigned intvoid *unsigned int--
142sys_selectfs/select.c intfd_set *fd_set *fd_set *struct timeval *
143sys_flockfs/locks.c unsigned intunsigned int---
144sys_msyncmm/filemap.c unsigned longsize_tint--
145sys_readvfs/read_write.c unsigned longconst struct iovec *unsigned long--
146sys_writevfs/read_write.c unsigned longconst struct iovec *unsigned long--
147sys_getsidkernel/sys.c pid_t----
148sys_fdatasyncfs/buffer.c unsigned int----
149sys_sysctlkernel/sysctl.c struct __sysctl_args *----
150sys_mlockmm/mlock.c unsigned longsize_t---
151sys_munlockmm/mlock.c unsigned longsize_t---
152sys_mlockallmm/mlock.c int----
153sys_munlockallmm/mlock.c -----
154sys_sched_setparamkernel/sched.c pid_tstruct sched_param *---
155sys_sched_getparamkernel/sched.c pid_tstruct sched_param *---
156sys_sched_setschedulerkernel/sched.c pid_tintstruct sched_param *--
157sys_sched_getschedulerkernel/sched.c pid_t----
158sys_sched_yieldkernel/sched.c -----
159sys_sched_get_priority_maxkernel/sched.c int----
160sys_sched_get_priority_minkernel/sched.c int----
161sys_sched_rr_get_intervalkernel/sched.c pid_tstruct timespec *---
162sys_nanosleepkernel/sched.c struct timespec *struct timespec *---
163sys_mremapmm/mremap.c unsigned longunsigned longunsigned longunsigned long-
164sys_setresuidkernel/sys.c uid_tuid_tuid_t--
165sys_getresuidkernel/sys.c uid_t *uid_t *uid_t *--
166sys_vm86arch/i386/kernel/vm86.c struct vm86_struct *----
167sys_query_modulekernel/module.c const char *intchar *size_tsize_t *
168sys_pollfs/select.c struct pollfd *unsigned intlong--
169sys_nfsservctlfs/filesystems.c intvoid *void *--
170sys_setresgidkernel/sys.c gid_tgid_tgid_t--
171sys_getresgidkernel/sys.c gid_t *gid_t *gid_t *--
172sys_prctlkernel/sys.c intunsigned longunsigned longunsigned longunsigned long
173sys_rt_sigreturnarch/i386/kernel/signal.c unsigned long----
174sys_rt_sigactionkernel/signal.c intconst struct sigaction *struct sigaction *size_t-
175sys_rt_sigprocmaskkernel/signal.c intsigset_t *sigset_t *size_t-
176sys_rt_sigpendingkernel/signal.c sigset_t *size_t---
177sys_rt_sigtimedwaitkernel/signal.c const sigset_t *siginfo_t *const struct timespec *size_t-
178sys_rt_sigqueueinfokernel/signal.c intintsiginfo_t *--
179sys_rt_sigsuspendarch/i386/kernel/signal.c sigset_t *size_t---
180sys_preadfs/read_write.c unsigned intchar *size_tloff_t-
181sys_pwritefs/read_write.c unsigned intconst char *size_tloff_t-
182sys_chownfs/open.c const char *uid_tgid_t--
183sys_getcwdfs/dcache.c char *unsigned long---
184sys_capgetkernel/capability.c cap_user_header_tcap_user_data_t---
185sys_capsetkernel/capability.c cap_user_header_tconst cap_user_data_t---
186sys_sigaltstackarch/i386/kernel/signal.c const stack_t *stack_t *---
187sys_sendfilemm/filemap.c intintoff_t *size_t-
190sys_vforkarch/i386/kernel/process.c struct pt_regs----

Créé avec HelpNDoc Personal Edition: Écrire des livres électroniques ePub pour l'iPad