系统调用与内核函数·系统调用 getpid在内核中对应的服务例程为sys_getpid(·sys_getpid(在内核的具体实现:rasmlinkage long sys_getpid(void)FLreturn current->pid;1
• 系统调用 getpid在内核中对应的 服务例程为sys_getpid() • sys_getpid()在内核的具体实现: asmlinkage long sys_getpid(void) { return current->pid; } 系统调用与内核函数 < >
系统调用与内核函数#inciude<syscall.n>#include<unistd.h>#include<stdio.h>#include<sys/types.h>int main(void) Iong ID1, ID2;r1*直接调用内核函数*/ID1=syscall(SYSgetpid):printf ("syscall(SYS_getpid)=%ldin", ID1);/*调用系统调用*/*/7ID2= getpidO;printf ("getpid()=%ldIn",ID2)return(0);儿<儿>
#include <syscall.h> #include <unistd.h> #include <stdio.h> #include <sys/types.h> int main(void) { long ID1, ID2; /*-*/ /* 直接调用内核函数*/ /*-*/ ID1 = syscall(SYS_getpid); printf ("syscall(SYS_getpid)=%ld\n", ID1); /*-*/ /* 调用系统调用 */ /*-*/ ID2 = getpid(); printf ("getpid()=%ld\n", ID2); return(0); } < > 系统调用与内核函数 系统调用与内核函数
系统调用处理程序及服务例程·当用户态的进程调用一个系统调用时,CPU切换到内核态并开始r执行一个内核函数·系统调用处理程序执行下列操作:一在内核栈保存大多数寄存器的内容一调用所谓系统调用服务例程的相应的C函数来处理系统调用-通过ret from sys_call()函数从系统调用返回
• 当用户态的进程调用一个系统调 用时,CPU切换到内核态并开始 执行一个内核函数 • 系统调用处理程序执行下列操作: –在内核栈保存大多数寄存器的内容 –调用所谓系统调用服务例程的相应 的C函数来处理系统调用 –通过ret_from_sys_call( )函数从系统 调用返回 < > 系统调用处理程序及服务例程