修改api名字

This commit is contained in:
zhangzheng
2022-12-13 21:52:17 +08:00
parent 0a81fa325c
commit 33ce7e829c
7 changed files with 65 additions and 29 deletions

View File

@@ -65,7 +65,10 @@
"arch.h": "c",
"list.h": "c",
"typeindex": "c",
"mm.h": "c"
"mm.h": "c",
"atomic.h": "c",
"slist.h": "c",
"exec.h": "c"
},
"cortex-debug.showRTOS": false
}

View File

@@ -3,7 +3,7 @@
#include <type.h>
/**
* @breif ԭ<EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><EFBFBD><EFBFBD>
* @breif 原子操作的变量
*/
typedef struct atomic {
volatile int32_t counter;
@@ -12,64 +12,64 @@ typedef struct atomic {
#define ATOMIC_INIT(a) ((struct atomic){(a)})
/**
* @breif ԭ<EFBFBD>ӱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD>
* @breif 原子变量自加
*/
uint32_t atomic_inc(volatile atomic_t *val);
/**
* @breif ԭ<EFBFBD>ӱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD>
* @breif 原子变量自减
*/
uint32_t atomic_dec(volatile atomic_t *val);
/**
* @breif <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD>ӱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
* @breif 设置原子变量的值
*/
void atomic_set(volatile atomic_t *val, uint32_t i);
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮ǰ<EFBFBD><EFBFBD>ֵ
* 设置值,并返回之前的值
*/
uint32_t atomic_ret_set(volatile atomic_t *val, uint32_t i);
/**
* @breif <EFBFBD><EFBFBD>ȡԭ<EFBFBD>ӱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
* @breif 读取原子变量的值
*/
uint32_t atomic_read(volatile atomic_t *val);
/**
* @breif <EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @breif 加上一个数
*/
void atomic_add(volatile atomic_t *a, uint32_t val);
/**
* @breif <EFBFBD><EFBFBD>ȥһ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @breif 减去一个数
*/
void AtomicSub(volatile atomic_t *a, uint32_t val);
uint32_t atomic_test(volatile atomic_t *a, uint32_t val);
/**
* @breif <EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>и<EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD><EFBFBD>ԵĽ<EFBFBD><EFBFBD><EFBFBD>
* @return 1<EFBFBD><EFBFBD><EFBFBD><EFBFBD>0 <20><>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0
* @breif 测试等于0则进行赋值并返回测试的结果
* @return 1等于0 0不等于0
*/
uint32_t atomic_test_set(volatile atomic_t *a, uint32_t val);
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>val;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮ǰ<D6AE>Ľ<EFBFBD><C4BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮ǰ<D6AE><C7B0>0<EFBFBD><30><EFBFBD>򷵻<EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD>򷵻<EFBFBD>0
* 设置val;并设置之前的结果如果加之前是0则返回1否则返回0
* @param a
* @param val
* @return
*/
uint32_t atomic_set_test(volatile atomic_t *a, uint32_t val);
/**
* <EFBFBD>Լ<EFBFBD>1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD>֮ǰ<EFBFBD>Ľ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮ǰ<EFBFBD><EFBFBD>0<EFBFBD><EFBFBD><EFBFBD>򷵻<EFBFBD>1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򷵻<EFBFBD>0
* 自加1。并返回加之前的结果如果加之前是0则返回1否则返回0
* @param a
* @return
*/
uint32_t atomic_inc_test(volatile atomic_t *a);
/**
* @breif <EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>+1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD><D8B2>ԵĽ<D4B5><C4BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򣬲<EFBFBD>+1
* @return 1<EFBFBD><EFBFBD><EFBFBD><EFBFBD>0 <20><>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0
* @breif 测试等于0则进行+1并返回测试的结果否则+1
* @return 1等于0 0不等于0
*/
uint32_t atomic_test_inc(volatile atomic_t *a);
/**
* @breif <EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1;<3B><>֮<EFBFBD><D6AE><EFBFBD><EFBFBD>;
* @return 1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0 <20><>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0
* @breif 测试大于0则减1;反之不动;
* @return 1等于0 0不等于0
*/
uint32_t atomic_test_dec_nq(volatile atomic_t *a);
/**
* @brief <EFBFBD>Ƚ<EFBFBD>a<EFBFBD><EFBFBD>b<EFBFBD>Ĵ<EFBFBD>С,<2C><><EFBFBD><EFBFBD>b<=a a+=1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>b<=a<><61><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0
* @brief 比较ab的大小,如果b<=a a+=1并且b<=a返回1否则0
*
* @param a
* @param b
@@ -78,7 +78,7 @@ uint32_t atomic_test_dec_nq(volatile atomic_t *a);
uint32_t atomic_cmp_hi_inc(volatile atomic_t *a, volatile uint32_t b);
/**
* @brief <EFBFBD>Ƚ<EFBFBD>a<EFBFBD><EFBFBD>b<EFBFBD>Ĵ<EFBFBD>С,<2C><><EFBFBD><EFBFBD>a<=b a+=1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>a<=b<><62><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0
* @brief 比较ab的大小,如果a<=b a+=1并且a<=b返回1否则0
*
* @param a
* @param b

View File

@@ -16,8 +16,8 @@
#include <mkrtos/dlist.h>
#include <mkrtos/slist.h>
#define NR_FILE 8
#define THREAD_NAME_LEN 8
#define NR_FILE 8 //!<最大文件描述符数量
#define THREAD_NAME_LEN 8 //!<最大线程名长度
/**
* @brief 任务的状态
@@ -61,7 +61,7 @@ struct stack_info {
struct sys_task_base_links;
struct sigaction;
struct mem_struct;
// struct mem_struct;
//struct tty_struct;
/**
* @brief 任务控制块
@@ -157,7 +157,7 @@ struct sys_tasks {
struct task *current_task; //!< 当前工作的任务节点
struct task *last_task; //!< 上次运行的线程
atomic_t sche_lock; //!< 是否允许系统进行任务调度
slist_head_t all_tk_list;// all_task; //!< 所有的任务链表
slist_head_t all_tk_list; //!< 所有的任务链表
atomic_t pid_temp; //!< 创建任务分配任务ID使用
uint16_t tasks_count; //!< 系统任务数
uint8_t is_first; //!< 是否首次,是为0不是为1
@@ -173,15 +173,23 @@ struct wait_queue {
//sched.c
extern struct sys_tasks sys_tasks_info;
//! 获取当前的进程
#define CUR_TASK sys_tasks_info.current_task
/**
* @brief 获取当前线程
* @brief Get the current task object
*
* @return struct task*
*/
static inline struct task* get_current_task(void)
{
return sys_tasks_info.current_task;
}
/**
* @brief Set the current task
*
* @param tk
*/
static inline void set_current_task(struct task* tk)
{
sys_tasks_info.current_task = tk;
@@ -199,10 +207,9 @@ void task_run(void);
void task_run_1(struct task *tk);
void sche_lock(void);
void sche_unlock(void);
uint32_t get_sche_lock_cn(void);
uint32_t sche_lock_cn_get(void);
void task_sche(void);
void task_update_cur(void);
// void del_task(struct task **task_ls, struct task *del, int flag);
int32_t add_task(struct task *p_task_block, uint32_t into_all_ls);
void tasks_check(void);
void set_helper(struct task *helper_task);

View File

@@ -4,12 +4,10 @@
#define __LIBRARY__
#include <unistd.h>
#include <arch/arch.h>
//#include "stdlib.h"
#include <mkrtos/sched.h>
#include <knl_service.h>
#include <mkrtos/fs.h>
#include <mkrtos/exec.h>
//#include <loader.h>
/**
* @brief 在系统中删除当前执行的任务,该删除只是设置为僵尸进程

View File

@@ -130,7 +130,7 @@ void sche_unlock(void) {
/**
* 获取调度器的锁计数
*/
uint32_t get_sche_lock_cn(void) {
uint32_t sche_lock_cn_get(void) {
return atomic_read(&(sys_tasks_info.sche_lock));
}

View File

@@ -38,6 +38,7 @@ int test_mem(void)
}
MKRTOS_ASSERT(m_free_size == free_size());
// void *user_malloc(uint32_t size,const char* name);
// void user_free(void *mem);
// void knl_mem_trace(void);

View File

@@ -0,0 +1,27 @@
#include <arch/atomic.h>
#include <mkrtos/sched.h>
#include "config.h"
#include "knl_service.h"
static int test_sched(void)
{
kprint("=======start sched mem\n");
sche_lock();
MKRTOS_ASSERT(sche_lock_cn_get() == 1);
sche_unlock();
MKRTOS_ASSERT(sche_lock_cn_get() == 0);
for (int i = 0; i < 10; i++) {
sche_lock();
}
MKRTOS_ASSERT(sche_lock_cn_get() == 10);
for (int i = 0; i < 10; i++) {
sche_unlock();
}
MKRTOS_ASSERT(sche_lock_cn_get() == 0);
kprint("=======end sched mem\n");
return 0;
}
INIT_REG(test_sched, INIT_TEST_LVL);