237 lines
6.5 KiB
C
237 lines
6.5 KiB
C
/*
|
|
* Copyright (c) 2020 AIIT XUOS Lab
|
|
* XiUOS is licensed under Mulan PSL v2.
|
|
* You can use this software according to the terms and conditions of the Mulan PSL v2.
|
|
* You may obtain a copy of Mulan PSL v2 at:
|
|
* http://license.coscl.org.cn/MulanPSL2
|
|
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
|
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
|
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
|
* See the Mulan PSL v2 for more details.
|
|
*/
|
|
|
|
/**
|
|
* @file user_api.h
|
|
* @brief define user api function and struct
|
|
* @version 1.0
|
|
* @author AIIT XUOS Lab
|
|
* @date 2021-04-24
|
|
*/
|
|
|
|
#ifndef __XS_USER_API_H__
|
|
#define __XS_USER_API_H__
|
|
|
|
#include <xiuos.h>
|
|
#include <iot-vfs_posix.h>
|
|
|
|
#ifdef SEPARATE_COMPILE
|
|
#include <stddef.h>
|
|
#include <stdint.h>
|
|
#include <kswitch.h>
|
|
#if defined(FS_VFS)
|
|
#include <iot-vfs.h>
|
|
#ifndef TASK_ISOLATION
|
|
#include <iot-vfs_posix.h>
|
|
#endif
|
|
#endif
|
|
|
|
#include <xs_service.h>
|
|
|
|
#define TASK_INFO 1
|
|
#define MEM_INFO 2
|
|
#define SEM_INFO 3
|
|
#define EVENT_INFO 4
|
|
#define MUTEX_INFO 5
|
|
#define MEMPOOL_INFO 6
|
|
#define MSGQUEUE_INFO 7
|
|
#define DEVICE_INFO 8
|
|
#define TIMER_INFO 9
|
|
|
|
int UserPrintInfo(unsigned long i);
|
|
|
|
struct utask
|
|
{
|
|
char name[NAME_NUM_MAX];
|
|
void *func_entry;
|
|
void *func_param;
|
|
uint32 stack_size;
|
|
uint8 prio;
|
|
};
|
|
typedef struct utask UtaskType;
|
|
|
|
typedef void DIR;
|
|
|
|
int32 UserTaskCreate(UtaskType utask);
|
|
|
|
x_err_t UserTaskStartup(int32 id);
|
|
x_err_t UserTaskDelete(int32 id);
|
|
void UserTaskQuit(void);
|
|
x_err_t UserTaskDelay(int32 ms);
|
|
x_err_t UserGetTaskName(int32 id ,char *name);
|
|
int32 UserGetTaskID(void);
|
|
uint8 UserGetTaskStat(int32 id);
|
|
|
|
#ifdef ARCH_SMP
|
|
x_err_t UserTaskCoreCombine(int32 id,uint8 core_id);
|
|
x_err_t UserTaskCoreUnCombine(int32 id);
|
|
uint8 UserGetTaskCombinedCore(int32 id);
|
|
uint8 UserGetTaskRunningCore(int32 id);
|
|
#endif
|
|
|
|
x_err_t UserGetTaskErrorstatus(int32 id);
|
|
uint8 UserGetTaskPriority(int32 id);
|
|
|
|
|
|
void *UserMalloc(x_size_t size);
|
|
void *UserRealloc(void *pointer, x_size_t size);
|
|
void *UserCalloc(x_size_t count, x_size_t size);
|
|
void UserFree(void *pointer);
|
|
|
|
#ifdef KERNEL_MUTEX
|
|
int32 UserMutexCreate();
|
|
void UserMutexDelete(int32 mutex);
|
|
int32 UserMutexObtain(int32 mutex, int32 wait_time);
|
|
int32 UserMutexAbandon(int32 mutex);
|
|
#endif
|
|
|
|
|
|
#ifdef KERNEL_SEMAPHORE
|
|
typedef int32 sem_t;
|
|
sem_t UserSemaphoreCreate(uint16 val);
|
|
x_err_t UserSemaphoreDelete(sem_t sem);
|
|
x_err_t UserSemaphoreObtain(sem_t sem, int32 wait_time);
|
|
x_err_t UserSemaphoreAbandon(sem_t sem);
|
|
x_err_t UserSemaphoreSetValue(sem_t sem, uint16 val);
|
|
#endif
|
|
|
|
|
|
#ifdef KERNEL_EVENT
|
|
EventIdType UserEventCreate(uint8 flag);
|
|
void UserEventDelete(EventIdType event);
|
|
x_err_t UserEventTrigger(EventIdType event, uint32 set);
|
|
x_err_t UserEventProcess(EventIdType event, uint32 set, uint8 option,
|
|
int32 wait_time, uint32 *Recved);
|
|
x_err_t UserEventReinit(EventIdType event);
|
|
#endif
|
|
|
|
|
|
#ifdef KERNEL_MESSAGEQUEUE
|
|
int32 UserMsgQueueCreate(x_size_t msg_size, x_size_t max_msgs);
|
|
x_err_t UserMsgQueueDelete(int32 mq );
|
|
x_err_t UserMsgQueueSendwait(int32 mq, const void *buffer,
|
|
x_size_t size, int32 wait_time);
|
|
x_err_t UserMsgQueueSend(int32 mq, const void *buffer, x_size_t size);
|
|
x_err_t UserMsgQueueUrgentSend(int32 mq, const void *buffer, x_size_t size);
|
|
x_err_t UserMsgQueueRecv(int32 mq, void *buffer, x_size_t size,int32 wait_time);
|
|
x_err_t UserMsgQueueReinit(int32 mq);
|
|
#endif
|
|
|
|
int open(const char *path, int flags, ...);
|
|
int read(int fd, void *buf, size_t len);
|
|
int write(int fd, const void *buf, size_t len);
|
|
int close(int fd);
|
|
off_t lseek(int fd, off_t offset, int whence);
|
|
int rename(const char *from, const char *to);
|
|
int unlink(const char *path);
|
|
int stat(const char *path, struct stat *buf);
|
|
int fstat(int fd, struct stat *buf);
|
|
int fsync(int fd);
|
|
int ftruncate(int fd, off_t length);
|
|
|
|
int mkdir(const char *path, mode_t mode);
|
|
DIR *opendir(const char *path);
|
|
int closedir(DIR *dirp);
|
|
struct dirent *readdir(DIR *dirp);
|
|
int rmdir(const char *path);
|
|
int chdir(const char *path);
|
|
char *getcwd(char *buf, size_t size);
|
|
long telldir(DIR *dirp);
|
|
void seekdir(DIR *dirp, off_t offset);
|
|
void rewinddir(DIR *dirp);
|
|
|
|
#ifdef FS_VFS
|
|
struct statfs {
|
|
size_t f_bsize;
|
|
size_t f_blocks;
|
|
size_t f_bfree;
|
|
};
|
|
|
|
int statfs(const char *path, struct statfs *buf);
|
|
#endif
|
|
|
|
int UserPrintf(const char *fmt, ...);
|
|
|
|
#else
|
|
struct utask
|
|
{
|
|
char name[NAME_NUM_MAX];
|
|
void *func_entry;
|
|
void *func_param;
|
|
int32_t stack_size;
|
|
uint8_t prio;
|
|
};
|
|
typedef struct utask UtaskType;
|
|
int32_t UserTaskCreate(UtaskType utask);
|
|
|
|
#define UserTaskStartup StartupKTask
|
|
#define UserTaskDelete KTaskDelete
|
|
#define UserTaskQuit KTaskQuit
|
|
#define UserTaskDelay MdelayKTask
|
|
|
|
x_err_t UserGetTaskName(int32_t id ,char *name);
|
|
int32_t UserGetTaskID(void);
|
|
uint8_t UserGetTaskStat(int32_t id);
|
|
|
|
#ifdef ARCH_SMP
|
|
#define UserTaskCoreCombine KTaskCoreCombine
|
|
#define UserTaskCoreUnCombine KTaskCoreUnCombine
|
|
|
|
uint8_t UserGetTaskCombinedCore(int32_t id);
|
|
uint8_t UserGetTaskRunningCore(int32_t id);
|
|
#endif
|
|
|
|
x_err_t UserGetTaskErrorstatus(int32_t id);
|
|
uint8_t UserGetTaskPriority(int32_t id);
|
|
|
|
#define UserMalloc x_malloc
|
|
#define UserRealloc x_realloc
|
|
#define UserCalloc x_calloc
|
|
#define UserFree x_free
|
|
|
|
#ifdef KERNEL_MUTEX
|
|
#define UserMutexCreate KMutexCreate
|
|
#define UserMutexDelete KMutexDelete
|
|
#define UserMutexObtain KMutexObtain
|
|
#define UserMutexAbandon KMutexAbandon
|
|
#endif
|
|
|
|
|
|
#ifdef KERNEL_SEMAPHORE
|
|
#define UserSemaphoreCreate KSemaphoreCreate
|
|
#define UserSemaphoreDelete KSemaphoreDelete
|
|
#define UserSemaphoreObtain KSemaphoreObtain
|
|
#define UserSemaphoreAbandon KSemaphoreAbandon
|
|
#define UserSemaphoreSetValue KSemaphoreSetValue
|
|
#endif
|
|
|
|
#ifdef KERNEL_EVENT
|
|
#define UserEventCreate KEventCreate
|
|
#define UserEventDelete KEventDelete
|
|
#define UserEventTrigger KEventTrigger
|
|
#define UserEventProcess KEventProcess
|
|
#endif
|
|
|
|
#ifdef KERNEL_MESSAGEQUEUE
|
|
#define UserMsgQueueCreate KCreateMsgQueue
|
|
#define UserMsgQueueDelete KDeleteMsgQueue
|
|
#define UserMsgQueueSendwait KMsgQueueSendwait
|
|
#define UserMsgQueueSend KMsgQueueSend
|
|
#define UserMsgQueueUrgentSend KMsgQueueUrgentSend
|
|
#define UserMsgQueueRecv KMsgQueueRecv
|
|
#define UserMsgQueueReinit KMsgQueueReinit
|
|
#endif
|
|
|
|
#define UserPrintf KPrintf
|
|
#endif
|
|
|
|
#endif |