|
1 mutex 支持FIFO 和PRIO 的任务阻塞策略,如果是FIFO 的话阻塞队列的顺序是按照先来后到的次序去排列阻塞任务,PRIO 策略的话是按照优先级的排序。具体的设置可以直接设置这个结构体中的
typedef struct RAW_COMMON_BLOCK_OBJECT {
LIST block_list;
RAW_U8 *name;
RAW_U8 block_way;
} RAW_COMMON_BLOCK_OBJECT;
block_way 可以为 RAW_BLOCKED_WAY_FIFO 或者RAW_BLOCKED_WAY_PRIO
1 RAW_U16 raw_mutex_create(RAW_MUTEX *mutex_ptr, RAW_U8 *name_ptr)
这个函数要注意的是刚创建的mutex 是可用的, raw_mutex_get第一次是能顺利获得的。
2 RAW_U16 raw_mutex_get(RAW_MUTEX *mutex_ptr, RAW_U32 wait_option)
这个函数是支持优先级继承算法的,能解决优先级反转的问题,当一个高优先级任务block 在这个mutex 上的时候它会去提高低优先级的任务到和它同一个优先级,并把低优先级的任务放到队列最前面。
参数wait_option 是超时函数,如果是RAW_WAIT_FOREVER 的话就永远等待。
|
|