API应用程序接口
本文档存放的是用户程序的编程接口的设计说明。
NXOS的API接口分为几个大类。进程,线程,内存管理,时间管理,枢纽系统,文件系统,设备管理,网络管理,图形管理,安全管理,用户态驱动框架。
进程管理
- NX_Error NX_ProcessLaunch(char path, NX_U32 flags, NX_U32 exitCode, char cmd, char env)
- void NX_ProcessExit(NX_U32 exitCode)
- NX_Error NX_ProcessGetCwd(char * buf, NX_Size length)
- NX_Error NX_ProcessSetCwd(char * buf)
线程管理
- NX_Error NX_ThreadCreate(NX_ThreadAttr attr, NX_U32 (handler)(void ), void arg, NX_U32 flags, NX_Solt * outSolt)
- void NX_ThreadExit(NX_U32 exitCode)
- NX_Error NX_ThreadGetId(NX_Solt solt, NX_U32 * outId)
- NX_U32 NX_ThreadGetCurrentId(void)
- NX_Error NX_ThreadGetCurrent(NX_Solt * outSolt)
- NX_Error NX_ThreadGetProcessId(NX_Solt solt, NX_U32 * outId)
- NX_Error NX_ThreadTerminate(NX_Solt solt, NX_U32 exitCode)
- NX_Error NX_ThreadSuspend(NX_Solt solt)
- NX_Error NX_ThreadResume(NX_Solt solt)
- NX_Error NX_ThreadWait(NX_Solt solt, NX_U32 * exitCode)
- NX_Error NX_ThreadSleep(NX_UArch microseconds)
NX_Error NX_ThreadAttrInit(NX_ThreadAttr * attr, NX_Size stackSize, NX_U32 schedPriority)
int NX_TLsAlloc(void)
- NX_Error NX_TLsFree(int index)
- NX_Error NX_TLsSetValue(int index, void * value)
- void * NX_TLsGetValue(int index)
- void NX_TlsSetExtension(void * data)
void * NX_TlsGetExtension(void)
NX_Solt NX_MutexCreate(NX_U32 attr)
- NX_Error NX_MutexDestroy(NX_Solt solt)
- NX_Error NX_MutexAcquire(NX_Solt solt)
- NX_Error NX_MutexTryAcquire(NX_Solt solt)
- NX_Error NX_MutexRelease(NX_Solt solt)
- NX_Error NX_MutexAcquirable(NX_Solt solt)
- NX_Solt NX_SemaphoreCreate(NX_IArch value) NX* _Error NX_SemaphoreDestroy(NX_Solt solt)
- NX_Error NX_SemaphoreWait(NX_Solt solt)
- NX_Error NX_SemaphoreTryWait(NX_Solt solt)
- NX_Error NX_SemaphoreSignal(NX_Solt solt)
- NX_Error NX_SemaphoreSignalAll(NX_Solt solt)
- NX_IArch NX_SemaphoreGetValue(NX_Solt solt)
内存管理
- void NX_MemMap(void addr, NX_Size length, NX_U32 prot, NX_Error * outErr)
- NX_Error NX_MemUnmap(void * addr, NX_Size length)
void NX_MemHeap(void addr, NX_Error * outErr)
int NX_PosixBrk(void * addr)
void * NX_PosixSbrk(int increment)
void * NX_MemAlloc(NX_Size size)
- void * NX_MemAllocEx(NX_Size number, NX_Size size)
- void NX_MemReAlloc(void p, NX_Size size)
- void NX_MemFree(void * ptr)
时间管理
- NX_Error NX_TimeSet(NX_Time * time)
- NX_Error NX_TimeGet(NX_Time * time)
- NX_TimeVal NX_ClockGetMillisecond(void)
文件系统
- NX_Error NX_VfsMount(const char dev, const char dir, const char * fsname, NX_U32 flags)
- NX_Error NX_VfsUnmount(const char * path)
- NX_Error NX_VfsSync(void)
- int NX_VfsOpen(const char path, NX_U32 flags, NX_U32 mode, NX_Error outErr)
- NX_Error NX_VfsClose(int fd)
- NX_U64 NX_VfsRead(int fd, void buf, NX_U64 len, NX_Error outErr)
- NX_U64 NX_VfsWrite(int fd, void buf, NX_U64 len, NX_Error outErr)
- NX_Error NX_VfsIoctl(int fd, NX_U32 cmd, void *arg)
- NX_I64 NX_VfsFileSeek(int fd, NX_I64 off, int whence, NX_Error *outErr)
- NX_Error NX_VfsFileSync(int fd)
- NX_Error NX_VfsFileChmod(int fd, NX_U32 mode)
- NX_Error NX_VfsFileStat(int fd, NX_VfsStatInfo * st)
- int NX_VfsOpenDir(const char name, NX_Error outErr)
- NX_Error NX_VfsCloseDir(int fd)
- NX_Error NX_VfsReadDir(int fd, NX_VfsDirent * dir)
- NX_Error NX_VfsRewindDir(int fd)
- NX_Error NX_VfsMakeDir(const char * path, NX_U32 mode)
- NX_Error NX_VfsRemoveDir(const char * path)
- NX_Error NX_VfsRename(const char src, const char dst)
- NX_Error NX_VfsUnlink(const char * path)
- NX_Error NX_VfsAccess(const char * path, NX_U32 mode)
- NX_Error NX_VfsChmod(const char * path, NX_U32 mode)
- NX_Error NX_VfsStat(const char path, NX_VfsStatInfo st)
网络系统
参考socket套接字接口设计
枢纽系统
- NX_Error NX_HubRegister(const char *name, NX_Size maxClient);
- NX_Error NX_HubUnregister(const char *name);
- NX_Error NX_HubCallParam(NX_Hub hub, NX_HubParam param, NX_Size *retVal);
- NX_Error NX_HubCallParamName(const char name, NX_HubParam param, NX_Size *retVal);
- NX_Error NX_HubReturn(NX_Size retVal, NX_Error retErr);
- NX_Error NX_HubPoll(NX_HubParam *param);
- void NX_HubTranslate(void addr, NX_Size size);
- NX_Error NX_HubDispatch(NX_HubParam *param, NX_HubHandler handlerTable[], NX_Size tableSize);
- NX_Error NX_HubLoop(NX_HubHandler handlerTable[], NX_Size tableSize);
设备接口
- NX_Solt NX_DeviceOpen(const char * name, NX_U32 flags);
- NX_Size NX_DeviceRead(NX_Solt solt, void *buf, NX_Offset off, NX_Size len);
- NX_Size NX_DeviceWrite(NX_Solt solt, void *buf, NX_Offset off, NX_Size len);
- NX_Error NX_DeviceControl(NX_Solt solt, NX_U32 cmd, void *arg);
define NX_DeviceClose(solt) NX_SoltClose(solt)
- void * NX_DeviceMap(NX_Solt solt, NX_Size length, NX_U32 prot);
信号接口
- NX_Error NX_SignalSend(NX_U32 tid, NX_Signal signal, void * signalValue);
- NX_Error NX_SignalGetAttr(NX_Signal signal, NX_SignalAttr * outAttr);
- NX_Error NX_SignalSetAttr(NX_Signal signal, NX_SignalAttr * attr);
NX_Error NX_SignalContorl(NX_Signal signalFirst, NX_Signal signalLast, NX_U32 cmd);
NX_Error NX_SignalInitAttr(NX_SignalAttr * attr, NX_SignalHandler handler, NX_U32 flags);
定时器
- NX_Solt NX_TimerCreate(NX_UArch milliseconds, void (handler)(void arg), void *arg, NX_U32 flags);
- NX_Error NX_TimerStart(NX_Solt solt);
- NX_Error NX_TimerStop(NX_Solt solt);