Разделение памяти:служебные службы и структуры данных
Посмотреть серию раскрытых ОСРВ
В этой статье мы продолжаем рассмотрение разделов памяти RTOS.
Служебные службы пула разделов
Nucleus RTOS имеет три вызова API, которые предоставляют служебные функции, связанные с пулами разделов:возвращают информацию о пуле разделов, возвращают количество пулов разделов в приложении и возвращают указатели на все пулы разделов в приложении. Первые два из них реализованы в Nucleus SE.
Получение информации о пуле разделов
Этот служебный вызов получает выборку информации о пуле разделов. Реализация Nucleus SE отличается от Nucleus RTOS тем, что возвращает меньше информации, поскольку именование объектов и порядок приостановки не поддерживаются, а приостановка задачи может быть отключена.
Вызов API Nucleus RTOS для получения информации о пуле разделов
Прототип сервисного вызова:
<цитата>STATUS NU_Partition_Pool_Information (NU_PARTITION_POOL * pool, CHAR * name, VOID ** start_address, UNSIGNED * pool_size, UNSIGNED * partition_size, UNSIGNED * доступно, UNSIGNED * выделено, OPTION * suspend_type, UNSIGNED * tasks_Twaiting); ** / сильный>
Параметры:
<цитата>бассейн - указатель на пул разделов, информация о котором запрашивается
имя - указатель на 8-значную целевую область для имени пула разделов; это включает место для нулевого терминатора.
начальный_адрес - указатель на переменную, которая получит указатель на начало области данных пула разделов
pool_size - указатель на переменную, которая получит размер пула разделов (в байтах)
размер_раздела - указатель на переменную, которая получит размер разделов в этом пуле
доступно - указатель на переменную, которая получит количество разделов, доступных в данный момент в этом пуле
выделено - указатель на переменную, которая получит количество разделов, используемых в данный момент в этом пуле
suspend_type - указатель на переменную для хранения типа приостановки задачи; допустимые типы приостановки задачи: NU_FIFO и NU_PRIORITY .
tasks_waiting - указатель на переменную, которая получит количество задач, приостановленных в этом пуле разделов
первая_задача - указатель на указатель задачи, в который помещается указатель первой приостановленной задачи
Возврат:
<цитата>NU_SUCCESS - звонок был успешно завершен
NU_INVALID_POOL - указатель пула разделов недействителен
Вызов Nucleus SE API для получения информации о пуле разделов
Этот вызов API поддерживает ключевые функции Nucleus RTOS API.
Прототип сервисного вызова:
<цитата>STATUS NUSE_Partition_Pool_Information (NUSE_PARTITION_POOL pool, ADDR * start_address, U32 * pool_size, U16 * partition_size, U8 * доступен, U8 * выделен, U8 * tasks_waiting, NUSE_TASK * first_task)
Параметры:
<цитата>бассейн - индекс пула разделов, информация о котором запрашивается
начальный_адрес - указатель на переменную, которая получит указатель на начало области данных пула разделов
pool_size - указатель на переменную, которая получит размер пула разделов (в байтах)
размер_раздела - указатель на переменную, которая получит размер разделов в этом пуле
доступно - указатель на переменную, которая получит количество разделов, доступных в данный момент в этом пуле
выделено - указатель на переменную, которая получит количество разделов, используемых в данный момент в этом пуле
tasks_waiting - указатель на переменную, которая получит количество задач, приостановленных в этом пуле разделов (ничего не возвращается, если приостановка задачи отключена)
первая_задача - указатель на переменную типа NUSE_TASK который получит индекс первой приостановленной задачи (ничего не возвращается, если приостановка задачи отключена)
Возврат:
<цитата>NUSE_SUCCESS - звонок был успешно завершен
NUSE_INVALID_POOL - недействительный индекс пула разделов
NUSE_INVALID_POINTER - один или несколько параметров указателя недопустимы
Реализация Nucleus SE информации о пуле разделов
Реализация этого вызова API довольно проста:
Функция возвращает статус пула разделов. Затем, если включена блокировка вызовов API, возвращается количество ожидающих задач и индекс первой (в противном случае эти два параметра устанавливаются на 0).
Получение количества пулов разделов
Этот вызов службы возвращает количество пулов разделов, настроенных в приложении. В то время как в Nucleus RTOS это будет меняться со временем, и возвращаемое значение будет представлять текущее количество пулов, в Nucleus SE возвращаемое значение устанавливается во время сборки и не может измениться.
Вызов API Nucleus RTOS для определения количества пулов разделов
Этот вызов API поддерживает ключевые функции Nucleus RTOS API.
Прототип сервисного вызова:
<цитата>UNSIGNED NU_Established_Partition_Pools (VOID);
Параметры:
<цитата>Нет
Возврат:
<цитата>Количество созданных пулов разделов в приложении
Вызов Nucleus SE API для определения количества пулов разделов
Этот вызов API поддерживает ключевые функции Nucleus RTOS API.
Прототип сервисного вызова:
<цитата>U8 NUSE_Partition_Pool_Count (недействительно);
Параметры:
<цитата>Нет
Возврат:
<цитата>Количество настроенных пулов разделов в приложении
Реализация
Реализация этого вызова API почти тривиально проста:значение #define символ NUSE_PARTITION_POOL_NUMBER возвращается.
Встроенный
- Плюсы и минусы облака по сравнению с собственными службами
- Токен блокчейна Microsoft Azure и службы управления данными
- Термины и концепции цифровой памяти
- Микропроцессоры
- Структуры и классы в C ++
- Почтовые ящики:введение и основные услуги
- Семафоры:служебные службы и структуры данных
- Семафоры:введение и базовые услуги
- Группы флагов событий:служебные службы и структуры данных
- Группы флагов событий:введение и базовые услуги