Files
mkrtos-real/mkrtos_knl/knl/access.c

50 lines
1023 B
C
Raw Normal View History

2023-12-05 21:16:00 +08:00
/**
* @file access.c
* @author zhangzheng (1358745329@qq.com)
* @brief
2023-12-05 21:16:00 +08:00
* @version 0.1
* @date 2023-12-05
*
2023-12-05 21:16:00 +08:00
* @copyright Copyright (c) 2023
*
2023-12-05 21:16:00 +08:00
*/
2023-11-20 16:17:58 +08:00
#include "types.h"
#include <task.h>
#include <mm_space.h>
#include <thread.h>
#include <util.h>
2023-11-20 16:17:58 +08:00
/**
* @brief 访
* TODO:
2023-12-05 21:16:00 +08:00
* @param tg_task
* @param addr
* @param size
* @param ignore_null nullptr
2023-12-05 21:16:00 +08:00
* @return bool_t TRUE访FALSE访
2023-11-20 16:17:58 +08:00
*/
2023-12-02 09:49:15 +08:00
bool_t is_rw_access(task_t *tg_task, void *addr, size_t size, bool_t ignore_null)
2023-11-20 16:17:58 +08:00
{
2023-12-02 09:49:15 +08:00
if (tg_task == NULL)
{
return FALSE;
}
#if !IS_ENABLED(CONFIG_MMU)
2023-11-20 16:17:58 +08:00
if (addr == NULL && ignore_null)
{
return TRUE;
}
void *mem;
size_t mem_size;
2023-12-02 09:49:15 +08:00
mm_space_get_ram_block(&tg_task->mm_space, &mem, &mem_size);
if (mem <= addr && (((char *)addr + size) <= ((char *)mem + mem_size)))
2023-11-20 16:17:58 +08:00
{
return TRUE;
}
return FALSE;
#else
return TRUE;
#endif
2023-11-20 16:17:58 +08:00
}