更新日期: 2022/06/01 来源: https://gitee.com/weharmony/kernel_liteos_a_note
los_syscall.h
浏览该文件的文档.
1/*
2 * Copyright (c) 2013-2019 Huawei Technologies Co., Ltd. All rights reserved.
3 * Copyright (c) 2020-2021 Huawei Device Co., Ltd. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without modification,
6 * are permitted provided that the following conditions are met:
7 *
8 * 1. Redistributions of source code must retain the above copyright notice, this list of
9 * conditions and the following disclaimer.
10 *
11 * 2. Redistributions in binary form must reproduce the above copyright notice, this list
12 * of conditions and the following disclaimer in the documentation and/or other materials
13 * provided with the distribution.
14 *
15 * 3. Neither the name of the copyright holder nor the names of its contributors may be used
16 * to endorse or promote products derived from this software without specific prior written
17 * permission.
18 *
19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
21 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
23 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
24 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
25 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
26 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
27 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
28 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
29 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 */
31
32#ifndef _LOS_SYSCALL_H
33#define _LOS_SYSCALL_H
34
35#include <sys/statfs.h>
36#include "los_typedef.h"
37#include "los_task.h"
38#include "los_mux.h"
39#include "los_signal.h"
40#include "syscall.h"
41#include "sysinfo.h"
42#include "time_posix.h"
43#ifdef LOSCFG_KERNEL_DYNLOAD
44#include "los_exec_elf.h"
45#endif
46#include "sys/resource.h"
47#include "sys/times.h"
48#include "sys/utsname.h"
49#include "sys/shm.h"
50#include "poll.h"
51#include "utime.h"
52#ifdef LOSCFG_COMPAT_POSIX
53#include "mqueue.h"
54#endif
55#include "time.h"
56#include "sys/time.h"
57#include "sys/stat.h"
58#include "sys/kstat.h"
59#ifdef LOSCFG_FS_VFS
60#include "sys/socket.h"
61#include "dirent.h"
62#include "fs/file.h"
63#include "epoll.h"
64#endif
65#include <sys/wait.h>
66#ifdef LOSCFG_FS_VFS
67#include "vnode.h"
68#endif
69/**
70 * @file los_syscall.h
71 * @brief
72@verbatim
73什么情况下会发生从用户态向内核态切换。这里细分为3种情况:
74
751、发生系统调用时
76
77这是处于用户态的进程主动请求切换到内核态的一种方式。用户态的进程通过系统调用
78申请使用操作系统提供的系统调用服务例程来处理任务。而系统调用的机制,其核心仍
79是使用了操作系统为用户特别开发的一个中断机制来实现的,即软中断。
80
812、产生异常时
82
83当CPU执行运行在用户态下的程序时,发生了某些事先不可知的异常,这时会触发由当前
84运行的进程切换到处理此异常的内核相关的程序中,也就是转到了内核态,如缺页异常。
85
863、外设产生中断时
87
88当外围设备完成用户请求的操作后,会向CPU发出相应的中断信号,这时CPU会暂停执行下
89一条即将要执行的指令转而去执行与中断信号对应的处理程序,如果先前执行的指令是
90用户态下的程序,那么这个转换的过程自然也就发生了由用户态到内核态的切换。
91比如硬盘读写操作的完成,系统会切换到硬盘读写的中断处理程序中执行后续操作等。
92可以看到上述三种由用户态切换到内核态的情况中,只有系统调用是进程主动请求发生切换的,
93中断和异常都是被动的。
94
95https://blog.csdn.net/piyongduo3393/article/details/89378243
96@endverbatim
97 */
98
99/* process */
100extern unsigned int SysGetGroupId(void);
101extern unsigned int SysGetTid(void);
102extern void SysSchedYield(int type);
103extern int SysSchedGetScheduler(int id, int flag);
104extern int SysSchedSetScheduler(int id, int policy, int prio, int flag);
105extern int SysSchedGetParam(int id, int flag);
106extern int SysSchedSetParam(int id, unsigned int prio, int flag);
107extern int SysSetProcessPriority(int which, int who, unsigned int prio);
108extern int SysGetProcessPriority(int which, int who);
109extern int SysSchedGetPriorityMin(int policy);
110extern int SysSchedGetPriorityMax(int policy);
111extern int SysSchedRRGetInterval(int pid, struct timespec *tp);
112extern int SysWait(int pid, USER int *status, int options, void *rusage);
113extern int SysWaitid(idtype_t type, int pid, USER siginfo_t *info, int options, void *rusage);
114extern int SysFork(void);
115extern int SysVfork(void);
116extern unsigned int SysGetPID(void);
117extern unsigned int SysGetPPID(void);
118extern int SysSetGroupID(unsigned int gid);
119extern int SysGetGroupID(void);
120extern int SysGetUserID(void);
121extern int SysGetEffUserID(void);
122extern int SysGetEffGID(void);
123extern int SysSetUserID(int uid);
124extern int SysGetRealEffSaveUserID(int *ruid, int *euid, int *suid);
125extern int SysGetRealEffSaveGroupID(int *rgid, int *egid, int *sgid);
126extern int SysSetRealEffUserID(int ruid, int euid);
127extern int SysSetRealEffGroupID(int rgid, int egid);
128extern int SysSetRealEffSaveGroupID(int rgid, int egid, int sgid);
129extern int SysSetRealEffSaveUserID(int ruid, int euid, int suid);
130extern int SysGetGroups(int size, int list[]);
131extern int SysSetGroups(int size, int list[]);
132extern int SysGetCurrProcessGroupID(void);
133extern int SysGetProcessGroupID(unsigned int pid);
134extern int SysSetProcessGroupID(unsigned int pid, unsigned int gid);
135extern unsigned int SysCreateUserThread(const TSK_ENTRY_FUNC func, const UserTaskParam *userParam, bool joinable);
136extern int SysSetThreadArea(const char *area);
137extern char *SysGetThreadArea(void);
138extern int SysUserThreadSetDetach(unsigned int taskID);
139extern int SysUserThreadDetach(unsigned int taskID);
140extern int SysThreadJoin(unsigned int taskID);
141extern void SysUserExitGroup(int status);
142extern void SysThreadExit(int status);
143extern int SysFutex(const unsigned int *uAddr, unsigned int flags, int val,
144 unsigned int absTime, const unsigned int *newUserAddr);
145extern int SysSchedGetAffinity(int id, unsigned int *cpuset, int flag);
146extern int SysSchedSetAffinity(int id, const unsigned short cpuset, int flag);
147
148#ifdef LOSCFG_COMPAT_POSIX
149extern mqd_t SysMqOpen(const char *mqName, int openFlag, mode_t mode, struct mq_attr *attr);
150extern int SysMqClose(mqd_t personal);
151extern int SysMqGetSetAttr(mqd_t mqd, const struct mq_attr *new, struct mq_attr *old);
152extern int SysMqUnlink(const char *mqName);
153extern int SysMqSend(mqd_t personal, const char *msgPtr, size_t msgLen, unsigned int msgPrio);
154extern int SysMqTimedSend(mqd_t personal, const char *msg, size_t msgLen, unsigned int msgPrio,
155 const struct timespec *absTimeout);
156extern ssize_t SysMqTimedReceive(mqd_t personal, char *msg, size_t msgLen, unsigned int *msgPrio,
157 const struct timespec *absTimeout);
158extern int SysMqNotify(mqd_t personal, const struct sigevent *sigev);
159#endif
160
161extern int SysSigAction(int sig, const sigaction_t *restrict sa, sigaction_t *restrict old, size_t sigsetsize);
162extern int SysSigprocMask(int how, const sigset_t_l *restrict setl, sigset_t_l *restrict oldl, size_t sigsetsize);
163extern int SysKill(pid_t pid, int sig);
164extern int SysPthreadKill(pid_t pid, int sig);
165extern int SysSigTimedWait(const sigset_t_l *setl, siginfo_t *info,
166 const struct timespec *timeout, size_t sigsetsize);
167extern int SysPause(void);
168extern int SysSigPending(sigset_t_l *setl);
169extern int SysSigSuspend(sigset_t_l *setl);
170extern int SysMkFifo(const char *pathName, mode_t mode);
171
172/* net */
173#ifdef LOSCFG_NET_LWIP_SACK
174extern int SysSocket(int domain, int type, int protocol);
175extern int SysBind(int s, const struct sockaddr *name, socklen_t namelen);
176extern int SysConnect(int s, const struct sockaddr *name, socklen_t namelen);
177extern int SysListen(int sockfd, int backlog);
178extern int SysAccept(int socket, struct sockaddr *address, socklen_t *addressLen);
179extern int SysGetSockName (int s, struct sockaddr *name, socklen_t *namelen);
180extern int SysGetPeerName (int s, struct sockaddr *name, socklen_t *namelen);
181extern ssize_t SysSend(int s, const void *dataptr, size_t size, int flags);
182extern ssize_t SysSendTo(int s, const void *dataptr, size_t size, int flags,
183 const struct sockaddr *to, socklen_t tolen);
184extern ssize_t SysRecv(int socket, void *buffer, size_t length, int flags);
185extern ssize_t SysRecvFrom(int socket, void *buffer, size_t length, int flags,
186 struct sockaddr *address, socklen_t *addressLen);
187extern int SysShutdown(int socket, int how);
188extern int SysSetSockOpt(int socket, int level, int optName,
189 const void *optValue, socklen_t optLen);
190extern int SysGetSockOpt(int sockfd, int level, int optName,
191 void *optValue, socklen_t *optLen);
192extern ssize_t SysSendMsg(int s, const struct msghdr *message, int flags);
193extern ssize_t SysRecvMsg(int s, struct msghdr *message, int flags);
194#endif
195
196/* vmm */
197extern void *SysMmap(void *addr, size_t size, int prot, int flags, int fd, size_t offset);
198extern int SysMunmap(void *addr, size_t size);
199extern int SysMprotect(void *vaddr, size_t len, int prot);
200extern void *SysMremap(void *oldAddr, size_t oldLen, size_t newLen, int flags, void *newAddr);
201extern void *SysBrk(void *addr);
202extern int SysShmGet(key_t key, size_t size, int shmflg);
203extern void *SysShmAt(int shmid, const void *shmaddr, int shmflg);
204extern int SysShmCtl(int shmid, int cmd, struct shmid_ds *buf);
205extern int SysShmDt(const void *shmaddr);
206
207/* misc */
208extern int SysUname(struct utsname *name);
209extern int SysInfo(struct sysinfo *info);
210
211/* time */
212extern int SysNanoSleep(const struct timespec *rqtp, struct timespec *rmtp);
213extern clock_t SysTimes(struct tms *buf);
214extern time_t SysTime(time_t *tloc);
215extern int SysSetiTimer(int which, const struct itimerval *value, struct itimerval *ovalue);
216extern int SysGetiTimer(int which, struct itimerval *value);
217extern int SysTimerCreate(clockid_t clockID, struct ksigevent *evp, timer_t *timerID);
218extern int SysTimerGettime(timer_t timerID, struct itimerspec *value);
219extern int SysTimerGetoverrun(timer_t timerID);
220extern int SysTimerDelete(timer_t timerID);
221extern int SysClockSettime(clockid_t clockID, const struct timespec *tp);
222extern int SysClockGettime(clockid_t clockID, struct timespec *tp);
223extern int SysClockGetres(clockid_t clockID, struct timespec *tp);
224extern int SysClockNanoSleep(clockid_t clk, int flags, const struct timespec *req, struct timespec *rem);
225extern int SysUtime(const char *path, const struct utimbuf *ptimes);
226extern int SysTimerSettime(timer_t timerID, int flags, const struct itimerspec *value, struct itimerspec *oldValue);
227
228extern int SysClockSettime64(clockid_t clockID, const struct timespec64 *tp);
229extern int SysClockGettime64(clockid_t clockID, struct timespec64 *tp);
230extern int SysClockGetres64(clockid_t clockID, struct timespec64 *tp);
231extern int SysClockNanoSleep64(clockid_t clk, int flags, const struct timespec64 *req, struct timespec64 *rem);
232extern int SysTimerGettime64(timer_t timerID, struct itimerspec64 *value);
233extern int SysTimerSettime64(timer_t timerID, int flags, const struct itimerspec64 *value, struct itimerspec64 *oldValue);
234
235/* filesystem */
236#ifdef LOSCFG_FS_VFS
237typedef int (*PollFun)(struct pollfd *fds, nfds_t nfds, int timeout);
238extern int fp_open(char *fullpath, int oflags, mode_t mode);
239extern int do_open(int dirfd, const char *path, int oflags, mode_t mode);
240extern int do_unlink(int dirfd, const char *pathname);
241extern int do_mkdir(int dirfd, const char *pathname, mode_t mode);
242extern int do_rmdir(int dirfd, const char *pathname);
243extern int do_rename(int oldfd, const char *oldpath, int newfd, const char *newpath);
244extern int do_select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
245 struct timeval *timeout, PollFun poll);
246extern int do_readdir(int fd, struct dirent **de, unsigned int count);
247extern ssize_t preadv(int __fd, const struct iovec *__iov, int __count, off_t __offset);
248extern ssize_t pwritev(int __fd, const struct iovec *__iov, int __count, off_t __offset);
249extern int chattr(const char *pathname, struct IATTR *attr);
250
251extern int SysClose(int fd);
252extern ssize_t SysRead(int fd, void *buf, size_t nbytes);
253extern ssize_t SysWrite(int fd, const void *buf, size_t nbytes);
254extern int SysOpen(const char *path, int oflags, ...);
255extern int SysCreat(const char *pathname, mode_t mode);
256extern int SysLink(const char *path1, const char *path2);
257extern ssize_t SysReadlink(const char *pathname, char *buf, size_t bufsize);
258extern int SysSymlink(const char *target, const char *linkpath);
259extern int SysLinkat(int olddirfd, const char *oldpath, int newdirfd, const char *newpath, int flags);
260extern int SysSymlinkat(const char *target, int dirfd, const char *linkpath);
261extern ssize_t SysReadlinkat(int dirfd, const char *pathname, char *buf, size_t bufsize);
262extern int SysUnlink( const char *pathname);
263extern int SysExecve(const char *fileName, char *const *argv, char *const *envp);
264extern int SysFchdir(int fd);
265extern int SysChdir(const char *path);
266extern int SysUtimensat(int fd, const char *path, struct timespec times[2], int flag);
267extern int SysFchmodat(int fd, const char *path, mode_t mode, int flag);
268extern int SysFchmod(int fd, mode_t mode);
269extern int SysChmod(const char *path, mode_t mode);
270extern int SysFchownat(int fd, const char *path, uid_t owner, gid_t group, int flag);
271extern int SysFchown(int fd, uid_t owner, gid_t group);
272extern int SysChown(const char *pathname, uid_t owner, gid_t group);
273extern off_t SysLseek(int fd, off_t offset, int whence);
274extern off64_t SysLseek64(int fd, int offsetHigh, int offsetLow, off64_t *result, int whence);
275extern int SysMount(const char *source, const char *target, const char *filesystemtype, unsigned long mountflags,
276 const void *data);
277extern int SysUmount(const char *target);
278extern int SysAccess(const char *path, int amode);
279extern int SysFaccessat(int fd, const char *filename, int amode, int flag);
280extern int SysRename(const char *oldpath, const char *newpath);
281extern int SysMkdir(const char *pathname, mode_t mode);
282extern int SysRmdir(const char *pathname);
283extern int SysDup(int fd);
284extern int SysUmount2(const char *target, int flags);
285extern int SysIoctl(int fd, int req, void *arg);
286extern int SysFcntl(int fd, int cmd, void *arg);
287extern int SysDup2(int fd1, int fd2);
288extern int SysSelect(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);
289extern int SysPselect6(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
290 const struct timespec *timeout, const long data[2]);
291extern int SysTruncate(const char *path, off_t length);
292extern int SysFtruncate(int fd, off_t length);
293extern int SysStatfs(const char *path, struct statfs *buf);
294extern int SysStatfs64(const char *path, size_t sz, struct statfs *buf);
295extern int SysFstatfs(int fd, struct statfs *buf);
296extern int SysFstatfs64(int fd, size_t sz, struct statfs *buf);
297
298extern int SysStat(const char *path, struct kstat *buf);
299extern int SysLstat(const char *path, struct kstat *buffer);
300extern int SysFstat(int fields, struct kstat *buf);
301extern int SysStatx(int fd, const char *restrict path, int flag, unsigned mask, struct statx *restrict stx);
302extern int SysFsync(int fd);
303extern ssize_t SysReadv(int fd, const struct iovec *iov, int iovcnt);
304extern ssize_t SysWritev(int fd, const struct iovec *iov, int iovcnt);
305extern int SysPipe(int pipefd[2]); /* 2 : pipe fds for read and write */
306extern int SysFormat(const char *dev, int sectors, int option);
307extern int SysFstat64(int fd, struct kstat *buf);
308extern int SysFstatat64(int fd, const char *restrict path, struct kstat *restrict buf, int flag);
309extern int SysFcntl64(int fd, int cmd, void *arg);
310extern int SysPoll(struct pollfd *fds, nfds_t nfds, int timeout);
311extern int SysPpoll(struct pollfd *fds, nfds_t nfds, const struct timespec *tmo_p,
312 const sigset_t *sigmask, int nsig);
313extern int SysPrctl(int option, ...);
314extern ssize_t SysPread64(int fd, void *buf, size_t nbytes, off64_t offset);
315extern ssize_t SysPwrite64(int fd, const void *buf, size_t nbytes, off64_t offset);
316extern int SysEpollCreate(int size);
317extern int SysEpollCreate1(int size);
318extern int SysEpollCtl(int epfd, int op, int fd, struct epoll_event *ev);
319extern int SysEpollWait(int epfd, struct epoll_event *evs, int maxevents, int timeout);
320extern int SysEpollPwait(int epfd, struct epoll_event *evs, int maxevents, int timeout, const sigset_t *mask);
321extern char *SysGetcwd(char *buf, size_t n);
322extern ssize_t SysSendFile(int outfd, int infd, off_t *offset, size_t count);
323extern int SysTruncate(const char *path, off_t length);
324extern int SysTruncate64(const char *path, off64_t length);
325extern int SysFtruncate64(int fd, off64_t length);
326extern int SysOpenat(int dirfd, const char *path, int oflags, ...);
327extern int SysMkdirat(int dirfd, const char *pathname, mode_t mode);
328extern int SysUnlinkat(int dirfd, const char *pathname, int flag);
329extern int SysRenameat(int oldfd, const char *oldpath, int newdfd, const char *newpath);
330extern int SysFallocate(int fd, int mode, off_t offset, off_t len);
331extern int SysFallocate64(int fd, int mode, off64_t offset, off64_t len);
332extern ssize_t SysPreadv(int fd, const struct iovec *iov, int iovcnt, long loffset, long hoffset);
333extern ssize_t SysPwritev(int fd, const struct iovec *iov, int iovcnt, long loffset, long hoffset);
334extern void SysSync(void);
335extern int SysGetdents64(int fd, struct dirent *de_user, unsigned int count);
336extern int do_opendir(const char *path, int oflags);
337extern char *SysRealpath(const char *path, char *resolvedPath);
338extern int SysUmask(int mask);
339extern int SysShellExec(const char *msgName, const char *cmdString);
340extern int SysReboot(int magic, int magic2, int type);
341extern int SysGetrusage(int what, struct rusage *ru);
342extern long SysSysconf(int name);
343extern int SysUgetrlimit(int resource, unsigned long long k_rlim[2]);
344extern int SysSetrlimit(int resource, unsigned long long k_rlim[2]);
345#endif
346#endif /* _LOS_SYSCALL_H */
VOID *(* TSK_ENTRY_FUNC)(UINTPTR param1, UINTPTR param2, UINTPTR param3, UINTPTR param4)
Define the type of a task entrance function.
Definition: los_task.h:480
UINTPTR mqd_t
Definition: mqueue.h:127
struct sigaction sigaction_t
Definition: los_signal.h:186
off64_t SysLseek64(int fd, int offsetHigh, int offsetLow, off64_t *result, int whence)
Definition: fs_syscall.c:611
ssize_t SysWrite(int fd, const void *buf, size_t nbytes)
系统调用|写文件:将buf中(用户空间)nbytes长度的内容写到文件中
Definition: fs_syscall.c:273
ssize_t SysReadlink(const char *pathname, char *buf, size_t bufsize)
Definition: fs_syscall.c:441
int SysSigTimedWait(const sigset_t_l *setl, siginfo_t *info, const struct timespec *timeout, size_t sigsetsize)
Definition: ipc_syscall.c:312
int SysGetProcessGroupID(unsigned int pid)
获取指定进程的组ID,为0时返回当前进程ID
ssize_t preadv(int __fd, const struct iovec *__iov, int __count, off_t __offset)
Definition: vfs_preadv.c:47
int SysUtimensat(int fd, const char *path, struct timespec times[2], int flag)
int SysClockSettime64(clockid_t clockID, const struct timespec64 *tp)
Definition: time_syscall.c:405
int SysGetSockName(int s, struct sockaddr *name, socklen_t *namelen)
Definition: net_syscall.c:165
unsigned int SysGetGroupId(void)
void SysUserExitGroup(int status)
int SysPoll(struct pollfd *fds, nfds_t nfds, int timeout)
SysPoll I/O多路转换
Definition: fs_syscall.c:1552
int SysRename(const char *oldpath, const char *newpath)
重命名文件
Definition: fs_syscall.c:787
int SysGetCurrProcessGroupID(void)
获取当前进程组ID
int SysGetRealEffSaveGroupID(int *rgid, int *egid, int *sgid)
int SysSchedGetPriorityMin(int policy)
int SysUname(struct utsname *name)
Definition: misc_syscall.c:52
int SysRmdir(const char *pathname)
删除目录
Definition: fs_syscall.c:847
int SysUgetrlimit(int resource, unsigned long long k_rlim[2])
Definition: misc_syscall.c:210
int SysEpollCreate1(int size)
Definition: fs_syscall.c:2757
int SysLstat(const char *path, struct kstat *buffer)
参见SysStat
Definition: fs_syscall.c:1370
int SysFallocate(int fd, int mode, off_t offset, off_t len)
Definition: fs_syscall.c:2067
int SysFsync(int fd)
把文件在内存中的部分写回磁盘
Definition: fs_syscall.c:1437
int SysPthreadKill(pid_t pid, int sig)
系统调用之之向进程发送信号
Definition: ipc_syscall.c:307
int SysShmGet(key_t key, size_t size, int shmflg)
得到一个共享内存标识符或创建一个共享内存对象
Definition: vm_syscall.c:129
int SysFstatfs64(int fd, size_t sz, struct statfs *buf)
Definition: fs_syscall.c:2634
int SysUmask(int mask)
int SysGetiTimer(int which, struct itimerval *value)
Definition: time_syscall.c:137
int SysThreadJoin(unsigned int taskID)
time_t SysTime(time_t *tloc)
Definition: time_syscall.c:90
int SysClockNanoSleep(clockid_t clk, int flags, const struct timespec *req, struct timespec *rem)
Definition: time_syscall.c:331
int SysFchdir(int fd)
Definition: fs_syscall.c:554
int SysAccept(int socket, struct sockaddr *address, socklen_t *addressLen)
Definition: net_syscall.c:138
int SysStat(const char *path, struct kstat *buf)
获取文件状态信息
Definition: fs_syscall.c:1339
int SysPselect6(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, const struct timespec *timeout, const long data[2])
Definition: fs_syscall.c:2682
int SysStatfs64(const char *path, size_t sz, struct statfs *buf)
获取文件系统信息
Definition: fs_syscall.c:1303
int SysTruncate(const char *path, off_t length)
系统调用|文件系统|截断功能
Definition: fs_syscall.c:1192
int SysSymlinkat(const char *target, int dirfd, const char *linkpath)
Definition: fs_syscall.c:1915
int SysGetRealEffSaveUserID(int *ruid, int *euid, int *suid)
int SysEpollCreate(int size)
Definition: fs_syscall.c:2751
int SysFchown(int fd, uid_t owner, gid_t group)
Definition: fs_syscall.c:2461
int do_open(int dirfd, const char *path, int oflags, mode_t mode)
long SysSysconf(int name)
系统配置
Definition: misc_syscall.c:198
char * SysGetcwd(char *buf, size_t n)
Definition: fs_syscall.c:1706
int SysFaccessat(int fd, const char *filename, int amode, int flag)
Definition: fs_syscall.c:2566
int SysEpollWait(int epfd, struct epoll_event *evs, int maxevents, int timeout)
Definition: fs_syscall.c:2787
int SysIoctl(int fd, int req, void *arg)
I/O总控制函数
Definition: fs_syscall.c:902
int SysShmCtl(int shmid, int cmd, struct shmid_ds *buf)
完成对共享内存的控制 此函数可以对shmid指定的共享存储进行多种操作(删除、取信息、加锁、解锁等)
Definition: vm_syscall.c:174
int SysSchedGetAffinity(int id, unsigned int *cpuset, int flag)
int SysTimerCreate(clockid_t clockID, struct ksigevent *evp, timer_t *timerID)
Definition: time_syscall.c:160
int(* PollFun)(struct pollfd *fds, nfds_t nfds, int timeout)
Definition: los_syscall.h:237
int SysInfo(struct sysinfo *info)
系统信息
Definition: misc_syscall.c:71
unsigned int SysCreateUserThread(const TSK_ENTRY_FUNC func, const UserTaskParam *userParam, bool joinable)
int SysFtruncate(int fd, off_t length)
系统调用|文件系统|截断功能
Definition: fs_syscall.c:1258
int SysSetThreadArea(const char *area)
ssize_t SysReadlinkat(int dirfd, const char *pathname, char *buf, size_t bufsize)
Definition: fs_syscall.c:1956
int SysPause(void)
系统调用之暂停任务
int SysStatx(int fd, const char *restrict path, int flag, unsigned mask, struct statx *restrict stx)
Definition: fs_syscall.c:1432
int SysSchedSetParam(int id, unsigned int prio, int flag)
ssize_t SysPwrite64(int fd, const void *buf, size_t nbytes, off64_t offset)
Definition: fs_syscall.c:1667
int SysDup2(int fd1, int fd2)
复制文件描述符
Definition: fs_syscall.c:1038
int SysFallocate64(int fd, int mode, off64_t offset, off64_t len)
Definition: fs_syscall.c:2081
int SysLink(const char *path1, const char *path2)
Definition: fs_syscall.c:406
int SysFstatfs(int fd, struct statfs *buf)
Definition: fs_syscall.c:2605
int SysStatfs(const char *path, struct statfs *buf)
获取指定路径下文件的文件系统信息
Definition: fs_syscall.c:1272
ssize_t SysReadv(int fd, const struct iovec *iov, int iovcnt)
通过FD读入数据到缓冲数组中,fd为进程描述符
Definition: fs_syscall.c:1464
int SysFcntl(int fd, int cmd, void *arg)
Definition: fs_syscall.c:957
int SysChmod(const char *path, mode_t mode)
Definition: fs_syscall.c:2337
int SysOpen(const char *path, int oflags,...)
系统调用|打开文件, 正常情况下返回进程的FD值
Definition: fs_syscall.c:294
int SysMkFifo(const char *pathName, mode_t mode)
Definition: ipc_syscall.c:389
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%...
Definition: vm_syscall.c:58
ssize_t SysWritev(int fd, const struct iovec *iov, int iovcnt)
将缓冲数组里的数据写入文件
Definition: fs_syscall.c:1500
int SysTimerSettime(timer_t timerID, int flags, const struct itimerspec *value, struct itimerspec *oldValue)
Definition: time_syscall.c:212
int do_mkdir(int dirfd, const char *pathname, mode_t mode)
void * SysMremap(void *oldAddr, size_t oldLen, size_t newLen, int flags, void *newAddr)
Definition: vm_syscall.c:90
int SysGetProcessPriority(int which, int who)
int SysFchmod(int fd, mode_t mode)
Definition: fs_syscall.c:2400
int SysSchedSetScheduler(int id, int policy, int prio, int flag)
int SysChown(const char *pathname, uid_t owner, gid_t group)
Definition: fs_syscall.c:2495
ssize_t SysSendFile(int outfd, int infd, off_t *offset, size_t count)
Definition: fs_syscall.c:1740
int SysSetGroupID(unsigned int gid)
int SysSetiTimer(int which, const struct itimerval *value, struct itimerval *ovalue)
Definition: time_syscall.c:108
int fp_open(char *fullpath, int oflags, mode_t mode)
mqd_t SysMqOpen(const char *mqName, int openFlag, mode_t mode, struct mq_attr *attr)
打开一个消息队列,由posix接口封装
Definition: ipc_syscall.c:87
int SysMqSend(mqd_t personal, const char *msgPtr, size_t msgLen, unsigned int msgPrio)
int SysSigSuspend(sigset_t_l *setl)
Definition: ipc_syscall.c:375
int SysFchmodat(int fd, const char *path, mode_t mode, int flag)
Definition: fs_syscall.c:2361
int SysSelect(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout)
SysSelect 系统调用|文件系统|select .鸿蒙liteos目前也支持epoll方式
Definition: fs_syscall.c:1135
int SysBind(int s, const struct sockaddr *name, socklen_t namelen)
Definition: net_syscall.c:79
int do_rename(int oldfd, const char *oldpath, int newfd, const char *newpath)
unsigned int SysGetPPID(void)
int SysSchedGetParam(int id, int flag)
int SysFstat64(int fd, struct kstat *buf)
Definition: fs_syscall.c:2202
int SysGetPeerName(int s, struct sockaddr *name, socklen_t *namelen)
Definition: net_syscall.c:194
void SysSync(void)
将内存缓冲区数据写回硬盘
int SysSetRealEffSaveUserID(int ruid, int euid, int suid)
int SysKill(pid_t pid, int sig)
系统调用之向进程发送信号
Definition: ipc_syscall.c:302
clock_t SysTimes(struct tms *buf)
Definition: time_syscall.c:384
int SysGetSockOpt(int sockfd, int level, int optName, void *optValue, socklen_t *optLen)
Definition: net_syscall.c:366
int do_unlink(int dirfd, const char *pathname)
int SysSymlink(const char *target, const char *linkpath)
Definition: fs_syscall.c:474
int SysExecve(const char *fileName, char *const *argv, char *const *envp)
动态加载程序过程
Definition: fs_syscall.c:548
int SysPpoll(struct pollfd *fds, nfds_t nfds, const struct timespec *tmo_p, const sigset_t *sigmask, int nsig)
Definition: fs_syscall.c:2648
int SysClose(int fd)
Definition: fs_syscall.c:236
int SysUmount2(const char *target, int flags)
卸载文件系统
Definition: fs_syscall.c:894
int SysUtime(const char *path, const struct utimbuf *ptimes)
Definition: time_syscall.c:45
int SysRenameat(int oldfd, const char *oldpath, int newdfd, const char *newpath)
Definition: fs_syscall.c:2023
int SysMqUnlink(const char *mqName)
Definition: ipc_syscall.c:176
int SysGetEffGID(void)
unsigned int SysGetTid(void)
获取当前任务ID
off_t SysLseek(int fd, off_t offset, int whence)
移动文件指针
Definition: fs_syscall.c:602
int SysGetrusage(int what, struct rusage *ru)
Definition: misc_syscall.c:158
int SysSigAction(int sig, const sigaction_t *restrict sa, sigaction_t *restrict old, size_t sigsetsize)
注册信号,鸿蒙内核只捕捉了SIGSYS 信号
Definition: ipc_syscall.c:274
void SysSchedYield(int type)
int SysFutex(const unsigned int *uAddr, unsigned int flags, int val, unsigned int absTime, const unsigned int *newUserAddr)
SysFutex 操作用户态快速互斥锁 系统调用
char * SysGetThreadArea(void)
int SysClockGetres(clockid_t clockID, struct timespec *tp)
Definition: time_syscall.c:308
ssize_t SysPread64(int fd, void *buf, size_t nbytes, off64_t offset)
对进程进行特定操作
Definition: fs_syscall.c:1629
int SysWaitid(idtype_t type, int pid, USER siginfo_t *info, int options, void *rusage)
ssize_t SysPwritev(int fd, const struct iovec *iov, int iovcnt, long loffset, long hoffset)
Definition: fs_syscall.c:2134
int SysFtruncate64(int fd, off64_t length)
Definition: fs_syscall.c:1767
ssize_t SysRead(int fd, void *buf, size_t nbytes)
系统调用|读文件:从文件中读取nbytes长度的内容到buf中(用户空间)
Definition: fs_syscall.c:252
int SysGetUserID(void)
获取用户ID
ssize_t SysSend(int s, const void *dataptr, size_t size, int flags)
Definition: net_syscall.c:223
int do_readdir(int fd, struct dirent **de, unsigned int count)
int SysGetEffUserID(void)
int SysSigPending(sigset_t_l *setl)
获取阻塞当前任务的信号集
Definition: ipc_syscall.c:355
int SysUserThreadDetach(unsigned int taskID)
unsigned int SysGetPID(void)
int SysSetGroups(int size, int list[])
int SysSetRealEffSaveGroupID(int rgid, int egid, int sgid)
int SysNanoSleep(const struct timespec *rqtp, struct timespec *rmtp)
Definition: time_syscall.c:355
int SysSetRealEffUserID(int ruid, int euid)
int SysWait(int pid, USER int *status, int options, void *rusage)
ssize_t SysRecvFrom(int socket, void *buffer, size_t length, int flags, struct sockaddr *address, socklen_t *addressLen)
Definition: net_syscall.c:298
int SysLinkat(int olddirfd, const char *oldpath, int newdirfd, const char *newpath, int flags)
Definition: fs_syscall.c:1870
int SysTimerGettime64(timer_t timerID, struct itimerspec64 *value)
Definition: time_syscall.c:524
int SysAccess(const char *path, int amode)
确定文件的可存取性
Definition: fs_syscall.c:762
int SysMqNotify(mqd_t personal, const struct sigevent *sigev)
Definition: ipc_syscall.c:119
int SysMqTimedSend(mqd_t personal, const char *msg, size_t msgLen, unsigned int msgPrio, const struct timespec *absTimeout)
定时时间发送消息,任务将被阻塞,等待被唤醒写入消息
Definition: ipc_syscall.c:195
int SysReboot(int magic, int magic2, int type)
重启系统
Definition: misc_syscall.c:90
int SysClockGetres64(clockid_t clockID, struct timespec64 *tp)
Definition: time_syscall.c:462
int SysSetUserID(int uid)
int SysClockGettime64(clockid_t clockID, struct timespec64 *tp)
Definition: time_syscall.c:435
int SysSetSockOpt(int socket, int level, int optName, const void *optValue, socklen_t optLen)
Definition: net_syscall.c:348
ssize_t SysSendTo(int s, const void *dataptr, size_t size, int flags, const struct sockaddr *to, socklen_t tolen)
Definition: net_syscall.c:246
int SysMqGetSetAttr(mqd_t mqd, const struct mq_attr *new, struct mq_attr *old)
封装posix的标准接口,获取和设置消息队列的属性
Definition: ipc_syscall.c:138
char * SysRealpath(const char *path, char *resolvedPath)
Definition: fs_syscall.c:2264
int SysMqClose(mqd_t personal)
关闭一个消息队列
Definition: ipc_syscall.c:106
int SysClockNanoSleep64(clockid_t clk, int flags, const struct timespec64 *req, struct timespec64 *rem)
Definition: time_syscall.c:489
int SysUnlinkat(int dirfd, const char *pathname, int flag)
Definition: fs_syscall.c:1994
int do_rmdir(int dirfd, const char *pathname)
int SysSchedGetPriorityMax(int policy)
int chattr(const char *pathname, struct IATTR *attr)
Definition: vfs_chattr.c:58
ssize_t SysSendMsg(int s, const struct msghdr *message, int flags)
Definition: net_syscall.c:396
ssize_t SysRecvMsg(int s, struct msghdr *message, int flags)
Definition: net_syscall.c:444
int SysFstatat64(int fd, const char *restrict path, struct kstat *restrict buf, int flag)
Definition: fs_syscall.c:2519
void * SysShmAt(int shmid, const void *shmaddr, int shmflg)
Definition: vm_syscall.c:152
int SysSetRealEffGroupID(int rgid, int egid)
int SysGetGroupID(void)
ssize_t pwritev(int __fd, const struct iovec *__iov, int __count, off_t __offset)
Definition: vfs_pwritev.c:47
int SysSchedSetAffinity(int id, const unsigned short cpuset, int flag)
int SysUnlink(const char *pathname)
删除链:删除由装入点管理的文件
Definition: fs_syscall.c:519
ssize_t SysRecv(int socket, void *buffer, size_t length, int flags)
Definition: net_syscall.c:273
int SysMprotect(void *vaddr, size_t len, int prot)
修改访问权限
Definition: vm_syscall.c:100
int SysCreat(const char *pathname, mode_t mode)
创建文件,从实现看 SysCreat 和 SysOpen 并没有太大的区别,只有打开方式的区别 SysCreat函数完全可以被SysOpen函数替代
Definition: fs_syscall.c:372
int SysGetGroups(int size, int list[])
int SysMkdirat(int dirfd, const char *pathname, mode_t mode)
Definition: fs_syscall.c:1841
int SysMunmap(void *addr, size_t size)
释放虚拟内存
Definition: vm_syscall.c:72
int SysSchedGetScheduler(int id, int flag)
int do_select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout, PollFun poll)
int SysTruncate64(const char *path, off64_t length)
系统调用|文件系统|截断功能
Definition: fs_syscall.c:1225
int SysSetrlimit(int resource, unsigned long long k_rlim[2])
Definition: misc_syscall.c:228
int SysTimerDelete(timer_t timerID)
Definition: time_syscall.c:252
void * SysBrk(void *addr)
brk也是申请堆内存的一种方式,一般小于 128K 会使用它
Definition: vm_syscall.c:110
int SysFork(void)
int SysGetdents64(int fd, struct dirent *de_user, unsigned int count)
Definition: fs_syscall.c:2239
int SysEpollPwait(int epfd, struct epoll_event *evs, int maxevents, int timeout, const sigset_t *mask)
Definition: fs_syscall.c:2810
int SysShmDt(const void *shmaddr)
与shmat函数相反,是用来断开与共享内存附加点的地址,禁止本进程访问此片共享内存
Definition: vm_syscall.c:192
int SysUmount(const char *target)
卸载文件系统,当某个文件系统不需要再使用了,那么可以将它卸载掉。
Definition: fs_syscall.c:734
int SysDup(int fd)
Definition: fs_syscall.c:871
int SysTimerGettime(timer_t timerID, struct itimerspec *value)
Definition: time_syscall.c:189
int do_opendir(const char *path, int oflags)
int SysShellExec(const char *msgName, const char *cmdString)
执行 shell 命令
Definition: misc_syscall.c:106
int SysOpenat(int dirfd, const char *path, int oflags,...)
Definition: fs_syscall.c:1781
int SysSchedRRGetInterval(int pid, struct timespec *tp)
int SysFchownat(int fd, const char *path, uid_t owner, gid_t group, int flag)
Definition: fs_syscall.c:2428
int SysVfork(void)
int SysEpollCtl(int epfd, int op, int fd, struct epoll_event *ev)
Definition: fs_syscall.c:2762
int SysShutdown(int socket, int how)
Definition: net_syscall.c:335
int SysConnect(int s, const struct sockaddr *name, socklen_t namelen)
Definition: net_syscall.c:102
int SysFormat(const char *dev, int sectors, int option)
Definition: fs_syscall.c:2173
int SysSetProcessPriority(int which, int who, unsigned int prio)
int SysMkdir(const char *pathname, mode_t mode)
创建目录
Definition: fs_syscall.c:823
int SysChdir(const char *path)
Definition: fs_syscall.c:578
int SysTimerSettime64(timer_t timerID, int flags, const struct itimerspec64 *value, struct itimerspec64 *oldValue)
Definition: time_syscall.c:553
int SysSigprocMask(int how, const sigset_t_l *restrict setl, sigset_t_l *restrict oldl, size_t sigsetsize)
系统调用之进程信号屏蔽, 什么意思?简单说就是 一个信号来了进程要不要处理,屏蔽就是不处理,注意不能屏蔽SIGKILL和SIGSTOP信号,必须要处理.
Definition: ipc_syscall.c:290
int SysTimerGetoverrun(timer_t timerID)
Definition: time_syscall.c:241
int SysFcntl64(int fd, int cmd, void *arg)
Definition: fs_syscall.c:2223
int SysMount(const char *source, const char *target, const char *filesystemtype, unsigned long mountflags, const void *data)
SysMount 挂载文件系统 挂载是指将一个存储设备挂接到一个已存在的路径上。我们要访问存储设备中的文件,必须将文件所在的分区挂载到一个已存在的路径上, 然后通过这个路径来访问存储设备。如果只有一个存...
Definition: fs_syscall.c:666
int SysClockSettime(clockid_t clockID, const struct timespec *tp)
Definition: time_syscall.c:263
int SysPrctl(int option,...)
对进程进行特定操作
Definition: fs_syscall.c:1597
void SysThreadExit(int status)
int SysListen(int sockfd, int backlog)
Definition: net_syscall.c:125
int SysClockGettime(clockid_t clockID, struct timespec *tp)
获取系统时间
Definition: time_syscall.c:285
int SysUserThreadSetDetach(unsigned int taskID)
int SysFstat(int fields, struct kstat *buf)
参见SysStat
Definition: fs_syscall.c:1401
ssize_t SysPreadv(int fd, const struct iovec *iov, int iovcnt, long loffset, long hoffset)
Definition: fs_syscall.c:2095
int SysSetProcessGroupID(unsigned int pid, unsigned int gid)
为指定进程设置进程组ID
int SysSocket(int domain, int type, int protocol)
Definition: net_syscall.c:66
int SysPipe(int pipefd[2])
Definition: fs_syscall.c:995
ssize_t SysMqTimedReceive(mqd_t personal, char *msg, size_t msgLen, unsigned int *msgPrio, const struct timespec *absTimeout)
定时接收消息,任务将被阻塞,等待被唤醒读取
Definition: ipc_syscall.c:230
INT64 ssize_t
Definition: los_typedef.h:79
int socket(int domain, int type, int protocol)
Definition: socket.c:314
此结构用于记录 vnode 的属性
Definition: vnode.h:81
Definition: shm.c:125
ARG_NUM_3 int
ARG_NUM_3 ARG_NUM_1 ARG_NUM_2 ARG_NUM_2 ARG_NUM_3 ARG_NUM_1 ARG_NUM_4 ARG_NUM_2 ARG_NUM_2 ARG_NUM_5 ARG_NUM_2 ARG_NUM_0 ARG_NUM_2 ARG_NUM_1 ARG_NUM_2 ARG_NUM_3 ARG_NUM_7 ARG_NUM_2 ARG_NUM_3 ARG_NUM_2 ARG_NUM_4 off64_t
ARG_NUM_3 ARG_NUM_1 ARG_NUM_2 ARG_NUM_2 ARG_NUM_3 ARG_NUM_1 ARG_NUM_4 ARG_NUM_2 ARG_NUM_2 ARG_NUM_5 ARG_NUM_2 ARG_NUM_0 ARG_NUM_2 ARG_NUM_1 ARG_NUM_2 ARG_NUM_3 ARG_NUM_7 ARG_NUM_2 ARG_NUM_3 ARG_NUM_2 ARG_NUM_4 ARG_NUM_5 ARG_NUM_6 ARG_NUM_3 ARG_NUM_5 ARG_NUM_7 ARG_NUM_1 ARG_NUM_4 ARG_NUM_5 ARG_NUM_4 ARG_NUM_7 ARG_NUM_2 ARG_NUM_3 ARG_NUM_7 ARG_NUM_7 ARG_NUM_3 ARG_NUM_3 ARG_NUM_3 ARG_NUM_7 ARG_NUM_3 ARG_NUM_2 char ARG_NUM_2 ARG_NUM_1 ARG_NUM_0 ARG_NUM_0 ARG_NUM_3 void ARG_NUM_1 ARG_NUM_0 unsigned ARG_NUM_0 ARG_NUM_2 ARG_NUM_3 ARG_NUM_2 ARG_NUM_5 ARG_NUM_3 ARG_NUM_3 ARG_NUM_4 ARG_NUM_1 ARG_NUM_1 ARG_NUM_3 ARG_NUM_2 mode_t
clock_t times(struct tms *buf)
Definition: time.c:1107