类型定义 | |
typedef int(* | PollFun) (struct pollfd *fds, nfds_t nfds, int timeout) |
函数 | |
unsigned int | SysGetGroupId (void) |
unsigned int | SysGetTid (void) |
获取当前任务ID 更多... | |
void | SysSchedYield (int type) |
int | SysSchedGetScheduler (int id, int flag) |
int | SysSchedSetScheduler (int id, int policy, int prio, int flag) |
int | SysSchedGetParam (int id, int flag) |
int | SysSchedSetParam (int id, unsigned int prio, int flag) |
int | SysSetProcessPriority (int which, int who, unsigned int prio) |
int | SysGetProcessPriority (int which, int who) |
int | SysSchedGetPriorityMin (int policy) |
int | SysSchedGetPriorityMax (int policy) |
int | SysSchedRRGetInterval (int pid, struct timespec *tp) |
int | SysWait (int pid, USER int *status, int options, void *rusage) |
int | SysWaitid (idtype_t type, int pid, USER siginfo_t *info, int options, void *rusage) |
int | SysFork (void) |
int | SysVfork (void) |
unsigned int | SysGetPID (void) |
unsigned int | SysGetPPID (void) |
int | SysSetGroupID (unsigned int gid) |
int | SysGetGroupID (void) |
int | SysGetUserID (void) |
获取用户ID 更多... | |
int | SysGetEffUserID (void) |
int | SysGetEffGID (void) |
int | SysSetUserID (int uid) |
int | SysGetRealEffSaveUserID (int *ruid, int *euid, int *suid) |
int | SysGetRealEffSaveGroupID (int *rgid, int *egid, int *sgid) |
int | SysSetRealEffUserID (int ruid, int euid) |
int | SysSetRealEffGroupID (int rgid, int egid) |
int | SysSetRealEffSaveGroupID (int rgid, int egid, int sgid) |
int | SysSetRealEffSaveUserID (int ruid, int euid, int suid) |
int | SysGetGroups (int size, int list[]) |
int | SysSetGroups (int size, int list[]) |
int | SysGetCurrProcessGroupID (void) |
获取当前进程组ID 更多... | |
int | SysGetProcessGroupID (unsigned int pid) |
获取指定进程的组ID,为0时返回当前进程ID 更多... | |
int | SysSetProcessGroupID (unsigned int pid, unsigned int gid) |
为指定进程设置进程组ID 更多... | |
unsigned int | SysCreateUserThread (const TSK_ENTRY_FUNC func, const UserTaskParam *userParam, bool joinable) |
int | SysSetThreadArea (const char *area) |
char * | SysGetThreadArea (void) |
int | SysUserThreadSetDetach (unsigned int taskID) |
int | SysUserThreadDetach (unsigned int taskID) |
int | SysThreadJoin (unsigned int taskID) |
void | SysUserExitGroup (int status) |
void | SysThreadExit (int status) |
int | SysFutex (const unsigned int *uAddr, unsigned int flags, int val, unsigned int absTime, const unsigned int *newUserAddr) |
SysFutex 操作用户态快速互斥锁 系统调用 更多... | |
int | SysSchedGetAffinity (int id, unsigned int *cpuset, int flag) |
int | SysSchedSetAffinity (int id, const unsigned short cpuset, int flag) |
mqd_t | SysMqOpen (const char *mqName, int openFlag, mode_t mode, struct mq_attr *attr) |
打开一个消息队列,由posix接口封装 更多... | |
int | SysMqClose (mqd_t personal) |
关闭一个消息队列 更多... | |
int | SysMqGetSetAttr (mqd_t mqd, const struct mq_attr *new, struct mq_attr *old) |
封装posix的标准接口,获取和设置消息队列的属性 更多... | |
int | SysMqUnlink (const char *mqName) |
int | SysMqSend (mqd_t personal, const char *msgPtr, size_t msgLen, unsigned int msgPrio) |
int | SysMqTimedSend (mqd_t personal, const char *msg, size_t msgLen, unsigned int msgPrio, const struct timespec *absTimeout) |
定时时间发送消息,任务将被阻塞,等待被唤醒写入消息 更多... | |
ssize_t | SysMqTimedReceive (mqd_t personal, char *msg, size_t msgLen, unsigned int *msgPrio, const struct timespec *absTimeout) |
定时接收消息,任务将被阻塞,等待被唤醒读取 更多... | |
int | SysMqNotify (mqd_t personal, const struct sigevent *sigev) |
int | SysSigAction (int sig, const sigaction_t *restrict sa, sigaction_t *restrict old, size_t sigsetsize) |
注册信号,鸿蒙内核只捕捉了SIGSYS 信号 更多... | |
int | SysSigprocMask (int how, const sigset_t_l *restrict setl, sigset_t_l *restrict oldl, size_t sigsetsize) |
系统调用之进程信号屏蔽, 什么意思?简单说就是 一个信号来了进程要不要处理,屏蔽就是不处理,注意不能屏蔽SIGKILL和SIGSTOP信号,必须要处理. 更多... | |
int | SysKill (pid_t pid, int sig) |
系统调用之向进程发送信号 更多... | |
int | SysPthreadKill (pid_t pid, int sig) |
系统调用之之向进程发送信号 更多... | |
int | SysSigTimedWait (const sigset_t_l *setl, siginfo_t *info, const struct timespec *timeout, size_t sigsetsize) |
int | SysPause (void) |
系统调用之暂停任务 更多... | |
int | SysSigPending (sigset_t_l *setl) |
获取阻塞当前任务的信号集 更多... | |
int | SysSigSuspend (sigset_t_l *setl) |
int | SysMkFifo (const char *pathName, mode_t mode) |
int | SysSocket (int domain, int type, int protocol) |
int | SysBind (int s, const struct sockaddr *name, socklen_t namelen) |
int | SysConnect (int s, const struct sockaddr *name, socklen_t namelen) |
int | SysListen (int sockfd, int backlog) |
int | SysAccept (int socket, struct sockaddr *address, socklen_t *addressLen) |
int | SysGetSockName (int s, struct sockaddr *name, socklen_t *namelen) |
int | SysGetPeerName (int s, struct sockaddr *name, socklen_t *namelen) |
ssize_t | SysSend (int s, const void *dataptr, size_t size, int flags) |
ssize_t | SysSendTo (int s, const void *dataptr, size_t size, int flags, const struct sockaddr *to, socklen_t tolen) |
ssize_t | SysRecv (int socket, void *buffer, size_t length, int flags) |
ssize_t | SysRecvFrom (int socket, void *buffer, size_t length, int flags, struct sockaddr *address, socklen_t *addressLen) |
int | SysShutdown (int socket, int how) |
int | SysSetSockOpt (int socket, int level, int optName, const void *optValue, socklen_t optLen) |
int | SysGetSockOpt (int sockfd, int level, int optName, void *optValue, socklen_t *optLen) |
ssize_t | SysSendMsg (int s, const struct msghdr *message, int flags) |
ssize_t | SysRecvMsg (int s, struct msghdr *message, int flags) |
void * | SysMmap (void *addr, size_t size, int prot, int flags, int fd, size_t offset) |
系统调用|申请虚拟内存(分配线性地址区间) 鸿蒙与Linux标准库的差异 http://weharmonyos.com/zh-cn/device-dev/kernel/%E4%B8%8ELinux%E6%A0%87%E5%87%86%E5%BA%93%E7%9A%84%E5%B7%AE%E5%BC%82/ 更多... | |
int | SysMunmap (void *addr, size_t size) |
释放虚拟内存 更多... | |
int | SysMprotect (void *vaddr, size_t len, int prot) |
修改访问权限 更多... | |
void * | SysMremap (void *oldAddr, size_t oldLen, size_t newLen, int flags, void *newAddr) |
void * | SysBrk (void *addr) |
brk也是申请堆内存的一种方式,一般小于 128K 会使用它 更多... | |
int | SysShmGet (key_t key, size_t size, int shmflg) |
得到一个共享内存标识符或创建一个共享内存对象 更多... | |
void * | SysShmAt (int shmid, const void *shmaddr, int shmflg) |
int | SysShmCtl (int shmid, int cmd, struct shmid_ds *buf) |
完成对共享内存的控制 此函数可以对shmid指定的共享存储进行多种操作(删除、取信息、加锁、解锁等) 更多... | |
int | SysShmDt (const void *shmaddr) |
与shmat函数相反,是用来断开与共享内存附加点的地址,禁止本进程访问此片共享内存 更多... | |
int | SysUname (struct utsname *name) |
int | SysInfo (struct sysinfo *info) |
系统信息 更多... | |
int | SysNanoSleep (const struct timespec *rqtp, struct timespec *rmtp) |
clock_t | SysTimes (struct tms *buf) |
time_t | SysTime (time_t *tloc) |
int | SysSetiTimer (int which, const struct itimerval *value, struct itimerval *ovalue) |
int | SysGetiTimer (int which, struct itimerval *value) |
int | SysTimerCreate (clockid_t clockID, struct ksigevent *evp, timer_t *timerID) |
int | SysTimerGettime (timer_t timerID, struct itimerspec *value) |
int | SysTimerGetoverrun (timer_t timerID) |
int | SysTimerDelete (timer_t timerID) |
int | SysClockSettime (clockid_t clockID, const struct timespec *tp) |
int | SysClockGettime (clockid_t clockID, struct timespec *tp) |
获取系统时间 更多... | |
int | SysClockGetres (clockid_t clockID, struct timespec *tp) |
int | SysClockNanoSleep (clockid_t clk, int flags, const struct timespec *req, struct timespec *rem) |
int | SysUtime (const char *path, const struct utimbuf *ptimes) |
int | SysTimerSettime (timer_t timerID, int flags, const struct itimerspec *value, struct itimerspec *oldValue) |
int | SysClockSettime64 (clockid_t clockID, const struct timespec64 *tp) |
int | SysClockGettime64 (clockid_t clockID, struct timespec64 *tp) |
int | SysClockGetres64 (clockid_t clockID, struct timespec64 *tp) |
int | SysClockNanoSleep64 (clockid_t clk, int flags, const struct timespec64 *req, struct timespec64 *rem) |
int | SysTimerGettime64 (timer_t timerID, struct itimerspec64 *value) |
int | SysTimerSettime64 (timer_t timerID, int flags, const struct itimerspec64 *value, struct itimerspec64 *oldValue) |
int | fp_open (char *fullpath, int oflags, mode_t mode) |
int | do_open (int dirfd, const char *path, int oflags, mode_t mode) |
int | do_unlink (int dirfd, const char *pathname) |
int | do_mkdir (int dirfd, const char *pathname, mode_t mode) |
int | do_rmdir (int dirfd, const char *pathname) |
int | do_rename (int oldfd, const char *oldpath, int newfd, const char *newpath) |
int | do_select (int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout, PollFun poll) |
int | do_readdir (int fd, struct dirent **de, unsigned int count) |
ssize_t | preadv (int __fd, const struct iovec *__iov, int __count, off_t __offset) |
ssize_t | pwritev (int __fd, const struct iovec *__iov, int __count, off_t __offset) |
int | chattr (const char *pathname, struct IATTR *attr) |
int | SysClose (int fd) |
ssize_t | SysRead (int fd, void *buf, size_t nbytes) |
系统调用|读文件:从文件中读取nbytes长度的内容到buf中(用户空间) 更多... | |
ssize_t | SysWrite (int fd, const void *buf, size_t nbytes) |
系统调用|写文件:将buf中(用户空间)nbytes长度的内容写到文件中 更多... | |
int | SysOpen (const char *path, int oflags,...) |
系统调用|打开文件, 正常情况下返回进程的FD值 更多... | |
int | SysCreat (const char *pathname, mode_t mode) |
创建文件,从实现看 SysCreat 和 SysOpen 并没有太大的区别,只有打开方式的区别 SysCreat函数完全可以被SysOpen函数替代 更多... | |
int | SysLink (const char *path1, const char *path2) |
ssize_t | SysReadlink (const char *pathname, char *buf, size_t bufsize) |
int | SysSymlink (const char *target, const char *linkpath) |
int | SysLinkat (int olddirfd, const char *oldpath, int newdirfd, const char *newpath, int flags) |
int | SysSymlinkat (const char *target, int dirfd, const char *linkpath) |
ssize_t | SysReadlinkat (int dirfd, const char *pathname, char *buf, size_t bufsize) |
int | SysUnlink (const char *pathname) |
删除链:删除由装入点管理的文件 更多... | |
int | SysExecve (const char *fileName, char *const *argv, char *const *envp) |
动态加载程序过程 更多... | |
int | SysFchdir (int fd) |
int | SysChdir (const char *path) |
int | SysUtimensat (int fd, const char *path, struct timespec times[2], int flag) |
int | SysFchmodat (int fd, const char *path, mode_t mode, int flag) |
int | SysFchmod (int fd, mode_t mode) |
int | SysChmod (const char *path, mode_t mode) |
int | SysFchownat (int fd, const char *path, uid_t owner, gid_t group, int flag) |
int | SysFchown (int fd, uid_t owner, gid_t group) |
int | SysChown (const char *pathname, uid_t owner, gid_t group) |
off_t | SysLseek (int fd, off_t offset, int whence) |
移动文件指针 更多... | |
off64_t | SysLseek64 (int fd, int offsetHigh, int offsetLow, off64_t *result, int whence) |
int | SysMount (const char *source, const char *target, const char *filesystemtype, unsigned long mountflags, const void *data) |
SysMount 挂载文件系统 挂载是指将一个存储设备挂接到一个已存在的路径上。我们要访问存储设备中的文件,必须将文件所在的分区挂载到一个已存在的路径上, 然后通过这个路径来访问存储设备。如果只有一个存储设备,则可以直接挂载到根目录 / 上,变成根文件系统 更多... | |
int | SysUmount (const char *target) |
卸载文件系统,当某个文件系统不需要再使用了,那么可以将它卸载掉。 更多... | |
int | SysAccess (const char *path, int amode) |
确定文件的可存取性 更多... | |
int | SysFaccessat (int fd, const char *filename, int amode, int flag) |
int | SysRename (const char *oldpath, const char *newpath) |
重命名文件 更多... | |
int | SysMkdir (const char *pathname, mode_t mode) |
创建目录 更多... | |
int | SysRmdir (const char *pathname) |
删除目录 更多... | |
int | SysDup (int fd) |
int | SysUmount2 (const char *target, int flags) |
卸载文件系统 更多... | |
int | SysIoctl (int fd, int req, void *arg) |
I/O总控制函数 更多... | |
int | SysFcntl (int fd, int cmd, void *arg) |
int | SysDup2 (int fd1, int fd2) |
复制文件描述符 更多... | |
int | SysSelect (int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout) |
SysSelect 系统调用|文件系统|select .鸿蒙liteos目前也支持epoll方式 更多... | |
int | SysPselect6 (int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, const struct timespec *timeout, const long data[2]) |
int | SysTruncate (const char *path, off_t length) |
系统调用|文件系统|截断功能 更多... | |
int | SysFtruncate (int fd, off_t length) |
系统调用|文件系统|截断功能 更多... | |
int | SysStatfs (const char *path, struct statfs *buf) |
获取指定路径下文件的文件系统信息 更多... | |
int | SysStatfs64 (const char *path, size_t sz, struct statfs *buf) |
获取文件系统信息 更多... | |
int | SysFstatfs (int fd, struct statfs *buf) |
int | SysFstatfs64 (int fd, size_t sz, struct statfs *buf) |
int | SysStat (const char *path, struct kstat *buf) |
获取文件状态信息 更多... | |
int | SysLstat (const char *path, struct kstat *buffer) |
参见SysStat 更多... | |
int | SysFstat (int fields, struct kstat *buf) |
参见SysStat 更多... | |
int | SysStatx (int fd, const char *restrict path, int flag, unsigned mask, struct statx *restrict stx) |
int | SysFsync (int fd) |
把文件在内存中的部分写回磁盘 更多... | |
ssize_t | SysReadv (int fd, const struct iovec *iov, int iovcnt) |
通过FD读入数据到缓冲数组中,fd为进程描述符 更多... | |
ssize_t | SysWritev (int fd, const struct iovec *iov, int iovcnt) |
将缓冲数组里的数据写入文件 更多... | |
int | SysPipe (int pipefd[2]) |
int | SysFormat (const char *dev, int sectors, int option) |
int | SysFstat64 (int fd, struct kstat *buf) |
int | SysFstatat64 (int fd, const char *restrict path, struct kstat *restrict buf, int flag) |
int | SysFcntl64 (int fd, int cmd, void *arg) |
int | SysPoll (struct pollfd *fds, nfds_t nfds, int timeout) |
SysPoll I/O多路转换 更多... | |
int | SysPpoll (struct pollfd *fds, nfds_t nfds, const struct timespec *tmo_p, const sigset_t *sigmask, int nsig) |
int | SysPrctl (int option,...) |
对进程进行特定操作 更多... | |
ssize_t | SysPread64 (int fd, void *buf, size_t nbytes, off64_t offset) |
对进程进行特定操作 更多... | |
ssize_t | SysPwrite64 (int fd, const void *buf, size_t nbytes, off64_t offset) |
int | SysEpollCreate (int size) |
int | SysEpollCreate1 (int size) |
int | SysEpollCtl (int epfd, int op, int fd, struct epoll_event *ev) |
int | SysEpollWait (int epfd, struct epoll_event *evs, int maxevents, int timeout) |
int | SysEpollPwait (int epfd, struct epoll_event *evs, int maxevents, int timeout, const sigset_t *mask) |
char * | SysGetcwd (char *buf, size_t n) |
ssize_t | SysSendFile (int outfd, int infd, off_t *offset, size_t count) |
int | SysTruncate64 (const char *path, off64_t length) |
系统调用|文件系统|截断功能 更多... | |
int | SysFtruncate64 (int fd, off64_t length) |
int | SysOpenat (int dirfd, const char *path, int oflags,...) |
int | SysMkdirat (int dirfd, const char *pathname, mode_t mode) |
int | SysUnlinkat (int dirfd, const char *pathname, int flag) |
int | SysRenameat (int oldfd, const char *oldpath, int newdfd, const char *newpath) |
int | SysFallocate (int fd, int mode, off_t offset, off_t len) |
int | SysFallocate64 (int fd, int mode, off64_t offset, off64_t len) |
ssize_t | SysPreadv (int fd, const struct iovec *iov, int iovcnt, long loffset, long hoffset) |
ssize_t | SysPwritev (int fd, const struct iovec *iov, int iovcnt, long loffset, long hoffset) |
void | SysSync (void) |
将内存缓冲区数据写回硬盘 更多... | |
int | SysGetdents64 (int fd, struct dirent *de_user, unsigned int count) |
int | do_opendir (const char *path, int oflags) |
char * | SysRealpath (const char *path, char *resolvedPath) |
int | SysUmask (int mask) |
int | SysShellExec (const char *msgName, const char *cmdString) |
执行 shell 命令 更多... | |
int | SysReboot (int magic, int magic2, int type) |
重启系统 更多... | |
int | SysGetrusage (int what, struct rusage *ru) |
long | SysSysconf (int name) |
系统配置 更多... | |
int | SysUgetrlimit (int resource, unsigned long long k_rlim[2]) |
int | SysSetrlimit (int resource, unsigned long long k_rlim[2]) |
什么情况下会发生从用户态向内核态切换。这里细分为3种情况: 1、发生系统调用时 这是处于用户态的进程主动请求切换到内核态的一种方式。用户态的进程通过系统调用 申请使用操作系统提供的系统调用服务例程来处理任务。而系统调用的机制,其核心仍 是使用了操作系统为用户特别开发的一个中断机制来实现的,即软中断。 2、产生异常时 当CPU执行运行在用户态下的程序时,发生了某些事先不可知的异常,这时会触发由当前 运行的进程切换到处理此异常的内核相关的程序中,也就是转到了内核态,如缺页异常。 3、外设产生中断时 当外围设备完成用户请求的操作后,会向CPU发出相应的中断信号,这时CPU会暂停执行下 一条即将要执行的指令转而去执行与中断信号对应的处理程序,如果先前执行的指令是 用户态下的程序,那么这个转换的过程自然也就发生了由用户态到内核态的切换。 比如硬盘读写操作的完成,系统会切换到硬盘读写的中断处理程序中执行后续操作等。 可以看到上述三种由用户态切换到内核态的情况中,只有系统调用是进程主动请求发生切换的, 中断和异常都是被动的。 https://blog.csdn.net/piyongduo3393/article/details/89378243
在文件 los_syscall.h 中定义.
在文件 los_syscall.h 第 237 行定义.
在文件 vfs_chattr.c 第 58 行定义.
int do_select | ( | int | nfds, |
fd_set * | readfds, | ||
fd_set * | writefds, | ||
fd_set * | exceptfds, | ||
struct timeval * | timeout, | ||
PollFun | poll | ||
) |
在文件 vfs_preadv.c 第 47 行定义.
在文件 vfs_pwritev.c 第 47 行定义.
确定文件的可存取性
在文件 fs_syscall.c 第 762 行定义.
int SysChdir | ( | const char * | path | ) |
int SysChown | ( | const char * | pathname, |
uid_t | owner, | ||
gid_t | group | ||
) |
int SysClockGetres | ( | clockid_t | clockID, |
struct timespec * | tp | ||
) |
在文件 time_syscall.c 第 308 行定义.
int SysClockGetres64 | ( | clockid_t | clockID, |
struct timespec64 * | tp | ||
) |
int SysClockGettime | ( | clockid_t | clockID, |
struct timespec * | tp | ||
) |
获取系统时间
在文件 time_syscall.c 第 285 行定义.
int SysClockGettime64 | ( | clockid_t | clockID, |
struct timespec64 * | tp | ||
) |
int SysClockNanoSleep | ( | clockid_t | clk, |
int | flags, | ||
const struct timespec * | req, | ||
struct timespec * | rem | ||
) |
在文件 time_syscall.c 第 331 行定义.
int SysClockNanoSleep64 | ( | clockid_t | clk, |
int | flags, | ||
const struct timespec64 * | req, | ||
struct timespec64 * | rem | ||
) |
int SysClockSettime | ( | clockid_t | clockID, |
const struct timespec * | tp | ||
) |
int SysClockSettime64 | ( | clockid_t | clockID, |
const struct timespec64 * | tp | ||
) |
在文件 fs_syscall.c 第 236 行定义.
创建文件,从实现看 SysCreat 和 SysOpen 并没有太大的区别,只有打开方式的区别
SysCreat函数完全可以被SysOpen函数替代
pathname | |
mode | 常用标签如下: O_CREAT:若文件存在,此标志无用;若不存在,建新文件 O_TRUNC:若文件存在,则长度被截为0,属性不变 O_WRONLY:写文件 O_RDONLY:读文件 O_BINARY:此标志可显示地给出以二进制方式打开文件 O_TEXT :此标志可用于显示地给出以文本方式打开文件 O_RDWR :即读也写 O_APPEND:即读也写,但每次写总是在文件尾添加 * |
在文件 fs_syscall.c 第 372 行定义.
unsigned int SysCreateUserThread | ( | const TSK_ENTRY_FUNC | func, |
const UserTaskParam * | userParam, | ||
bool | joinable | ||
) |
在文件 process_syscall.c 第 882 行定义.
复制文件描述符
在文件 fs_syscall.c 第 1038 行定义.
int SysEpollCtl | ( | int | epfd, |
int | op, | ||
int | fd, | ||
struct epoll_event * | ev | ||
) |
int SysEpollPwait | ( | int | epfd, |
struct epoll_event * | evs, | ||
int | maxevents, | ||
int | timeout, | ||
const sigset_t * | mask | ||
) |
在文件 fs_syscall.c 第 2810 行定义.
int SysEpollWait | ( | int | epfd, |
struct epoll_event * | evs, | ||
int | maxevents, | ||
int | timeout | ||
) |
int SysExecve | ( | const char * | fileName, |
char *const * | argv, | ||
char *const * | envp | ||
) |
动态加载程序过程
在文件 fs_syscall.c 第 548 行定义.
在文件 fs_syscall.c 第 2566 行定义.
在文件 fs_syscall.c 第 2081 行定义.
在文件 fs_syscall.c 第 2400 行定义.
在文件 fs_syscall.c 第 2361 行定义.
在文件 fs_syscall.c 第 2461 行定义.
用来修改已经打开文件的属性的函数包含5个功能: 1.复制一个已有文件描述符,功能和dup和dup2相同,对应的cmd:F_DUPFD、F_DUPFD_CLOEXEC。 当使用这两个cmd时,需要传入第三个参数,fcntl返回复制后的文件描述符,此返回值是之前未被占用的描述符, 并且必须一个大于等于第三个参数值。 F_DUPFD命令要求返回的文件描述符会清除对应的FD_CLOEXEC F_DUPFD_CLOEXEC要求设置新描述符的FD_CLOEXEC标志。 2.获取、设置文件描述符标志,对应的cmd:F_GETFD、F_SETFD。 用于设置FD_CLOEXEC标志,此标志的含义是:当进程执行exec系统调用后此文件描述符会被自动关闭。 3.获取、设置文件访问状态标志,对应的cmd:F_GETFL、F_SETFL。 获取当前打开文件的访问标志,设置对应的访问标志,一般常用来设置做非阻塞读写操作。 4.获取、设置记录锁功能,对应的cmd:F_GETLK、F_SETLK、F_SETLKW。 5.获取、设置异步I/O所有权,对应的cmd:F_GETOWN、F_SETOWN。 获取和设置用来接收SIGIO/SIGURG信号的进程id或者进程组id。返回对应的进程id或者进程组id取负值。 *
fd | |
cmd | |
arg |
在文件 fs_syscall.c 第 957 行定义.
在文件 process_syscall.c 第 350 行定义.
int SysFutex | ( | const unsigned int * | uAddr, |
unsigned int | flags, | ||
int | val, | ||
unsigned int | absTime, | ||
const unsigned int * | newUserAddr | ||
) |
SysFutex 操作用户态快速互斥锁 系统调用
absTime | 绝对时间 |
flags | 操作标识(FUTEX_WAKE | FUTEX_WAIT) |
newUserAddr | FUTEX_REQUEUE下调整后带回新的用户空间地址 |
uAddr | 用户态下共享内存的地址,里面存放的是一个对齐的整型计数器 |
val |
在文件 process_syscall.c 第 1022 行定义.
获取当前进程组ID
在文件 process_syscall.c 第 401 行定义.
char * SysGetcwd | ( | char * | buf, |
size_t | n | ||
) |
在文件 fs_syscall.c 第 1706 行定义.
在文件 fs_syscall.c 第 2239 行定义.
在文件 net_syscall.c 第 194 行定义.
在文件 process_syscall.c 第 365 行定义.
获取指定进程的组ID,为0时返回当前进程ID
在文件 process_syscall.c 第 392 行定义.
在文件 process_syscall.c 第 227 行定义.
在文件 misc_syscall.c 第 158 行定义.
在文件 net_syscall.c 第 165 行定义.
在文件 net_syscall.c 第 366 行定义.
char * SysGetThreadArea | ( | void | ) |
int SysInfo | ( | struct sysinfo * | info | ) |
系统信息
在文件 misc_syscall.c 第 71 行定义.
int SysLink | ( | const char * | path1, |
const char * | path2 | ||
) |
在文件 fs_syscall.c 第 611 行定义.
int SysLstat | ( | const char * | path, |
struct kstat * | buffer | ||
) |
在文件 ipc_syscall.c 第 389 行定义.