ОСРВ MULTEX-ARM
Руководство программиста
Файл multex.h

Основной подключаемый файл RTOS MULTEX-ARM. Подробнее...

Макросы

#define __be32_to_cpu(x)
 
#define __LITTLE_ENDIAN
 
#define _MULTEX_
 
#define ARCH_DMA_MINALIGN   64
 
#define clamp(val, min, max)
 
#define debug_cond(cond, fmt, args...)
 
#define DIV_ROUND_CLOSEST(x, divisor)
 
#define get_unaligned(ptr)
 
#define KERN_DEBUG   "MK_Debug:"
 
#define KERN_INFO   "MK_Info:"
 
#define likely(x)   __builtin_expect((x),1)
 
#define printk   printf
 
#define put_unaligned(val, ptr)
 
#define SHELL_NAME   "init"
 
#define SHELL_PRIORITY   100
 
#define unlikely(x)   __builtin_expect((x),0)
 
#define VX_SUPERVISOR_MODE   0
 

Определения типов

typedef int(* FUNCPTR) (int)
 Указатель на функцию, которая используется как точка входа для процессов. Подробнее...
 

Перечисления

enum  STATUS { OK = 0 , ERROR = -1 }
 Результат выполнения. Подробнее...
 

Макросы типовых операций

#define __ALIGN_MASK(x, mask)   (((x)+(mask))&~(mask))
 
#define ALIGN(x, a)   __ALIGN_MASK((x),(typeof(x))(a)-1)
 
#define ALLOC_ALIGN_BUFFER(type, name, size, align)
 
#define ALLOC_CACHE_ALIGN_BUFFER(type, name, size)    ALLOC_ALIGN_BUFFER(type, name, size, ARCH_DMA_MINALIGN)
 
#define ARRAY_SIZE(x)   (sizeof(x) / sizeof((x)[0]))
 
#define DEFINE_ALIGN_BUFFER(type, name, size, align)
 
#define DEFINE_CACHE_ALIGN_BUFFER(type, name, size)    DEFINE_ALIGN_BUFFER(type, name, size, ARCH_DMA_MINALIGN)
 
#define DIV_ROUND(n, d)   (((n) + ((d)/2)) / (d))
 
#define DIV_ROUND_UP(n, d)   (((n) + (d) - 1) / (d))
 
#define MAX(a, b)    (((a)>(b))?(a):(b))
 
#define MAX_SAFE(a, b)
 
#define MEMBER_SIZE(type, member)   (sizeof(((type *)0)->member))
 
#define MIN(a, b)    (((a)<(b))?(a):(b))
 
#define MIN_SAFE(a, b)
 
#define ROUND(a, b)   (((a) + (b) - 1) & ~((b) - 1))
 Округление. Подробнее...
 
#define roundup(x, y)   ((((x) + ((y) - 1)) / (y)) * (y))
 Округление в большую сторону. Подробнее...
 
#define START_ONCE   do{static int Started = 0;if(Started == 1){return;} Started = 1;}while(0)
 
#define START_ONCE_R(r)   do{static int Started = 0;if(Started == 1){return (r);} Started = 1;}while(0)
 

Различные типы, использующиеся в некоторых модулях.

typedef unsigned int dma_addr_t
 
typedef int irqreturn_t
 
typedef unsigned int resource_size_t
 

Подробное описание

В данном файле содержатся базовые определения операционной системы RTOS MULTEX-ARM.

См. также
Операционная система жесткого реального времени MULTEX-ARM.

Макросы

◆ __ALIGN_MASK

#define __ALIGN_MASK (   x,
  mask 
)    (((x)+(mask))&~(mask))

◆ __be32_to_cpu

#define __be32_to_cpu (   x)
Макроопределение:
((((x) & 0x000000ff) << 24) | \
(((x) & 0x0000ff00) << 8) | \
(((x) & 0x00ff0000) >> 8) | \
(((x) & 0xff000000) >> 24))

◆ __LITTLE_ENDIAN

#define __LITTLE_ENDIAN

Используемый в системе порядок следования бит.

◆ _MULTEX_

#define _MULTEX_

Используемая операционная система.

◆ ALIGN

#define ALIGN (   x,
 
)    __ALIGN_MASK((x),(typeof(x))(a)-1)

◆ ALLOC_ALIGN_BUFFER

#define ALLOC_ALIGN_BUFFER (   type,
  name,
  size,
  align 
)
Макроопределение:
char __##name[ROUND(size * sizeof(type), align) + (align - 1)]; \
type *name = (type *) ALIGN((uintptr_t)__##name, align)
STATUS type(const char *filePath)
#define ROUND(a, b)
Округление.
Definition: multex.h:128
#define ALIGN(x, a)
Definition: multex.h:134
unsigned int uintptr_t
Definition: stdint.h:65

◆ ALLOC_CACHE_ALIGN_BUFFER

#define ALLOC_CACHE_ALIGN_BUFFER (   type,
  name,
  size 
)     ALLOC_ALIGN_BUFFER(type, name, size, ARCH_DMA_MINALIGN)

◆ ARCH_DMA_MINALIGN

#define ARCH_DMA_MINALIGN   64

◆ ARRAY_SIZE

#define ARRAY_SIZE (   x)    (sizeof(x) / sizeof((x)[0]))

Макрос, возвращающий количество элементов массива.

◆ clamp

#define clamp (   val,
  min,
  max 
)
Макроопределение:
({ \
typeof(val) __val = (val); \
typeof(min) __min = (min); \
typeof(max) __max = (max); \
(void) (&__val == &__min); \
(void) (&__val == &__max); \
__val = __val < __min ? __min: __val; \
__val > __max ? __max: __val; })

◆ debug_cond

#define debug_cond (   cond,
  fmt,
  args... 
)
Макроопределение:
do { \
if (cond) \
printf(fmt, ##args); \
} while (0)

◆ DEFINE_ALIGN_BUFFER

#define DEFINE_ALIGN_BUFFER (   type,
  name,
  size,
  align 
)
Макроопределение:
static char __##name[roundup(size * sizeof(type), align)] \
__attribute__((aligned(align))); \
static type *name = (type *)__##name
#define roundup(x, y)
Округление в большую сторону.
Definition: multex.h:131

◆ DEFINE_CACHE_ALIGN_BUFFER

#define DEFINE_CACHE_ALIGN_BUFFER (   type,
  name,
  size 
)     DEFINE_ALIGN_BUFFER(type, name, size, ARCH_DMA_MINALIGN)

◆ DIV_ROUND

#define DIV_ROUND (   n,
 
)    (((n) + ((d)/2)) / (d))

◆ DIV_ROUND_CLOSEST

#define DIV_ROUND_CLOSEST (   x,
  divisor 
)
Макроопределение:
( \
{ \
typeof(x) __x = x; \
typeof(divisor) __d = divisor; \
(((typeof(x))-1) > 0 || \
((typeof(divisor))-1) > 0 || (__x) > 0) ? \
(((__x) + ((__d) / 2)) / (__d)) : \
(((__x) - ((__d) / 2)) / (__d)); \
} \
)

◆ DIV_ROUND_UP

#define DIV_ROUND_UP (   n,
 
)    (((n) + (d) - 1) / (d))

◆ get_unaligned

#define get_unaligned (   ptr)
Макроопределение:
((__force typeof(*(ptr)))({ \
__builtin_choose_expr(sizeof(*(ptr)) == 1, *(ptr), \
__builtin_choose_expr(sizeof(*(ptr)) == 2, get_unaligned_le16((ptr)), \
__builtin_choose_expr(sizeof(*(ptr)) == 4, get_unaligned_le32((ptr)), \
__builtin_choose_expr(sizeof(*(ptr)) == 8, get_unaligned_le64((ptr)), \
__bad_unaligned_access_size())))); \
}))

◆ KERN_DEBUG

#define KERN_DEBUG   "MK_Debug:"

◆ KERN_INFO

#define KERN_INFO   "MK_Info:"

◆ likely

#define likely (   x)    __builtin_expect((x),1)

Встроенная функция, дающая компилятору подсказку о том, что условие x - истинно.

◆ MAX

#define MAX (   a,
 
)     (((a)>(b))?(a):(b))

Не-типобезопасный макрос, возвращающий максимальное значение из 2х вариантов.

◆ MAX_SAFE

#define MAX_SAFE (   a,
 
)
Макроопределение:
({ __typeof__ (a) _a = (a); \
__typeof__ (b) _b = (b); \
_a > _b ? _a : _b; })

Типобезопасный макрос, возвращающий максимальное значение из 2х вариантов.

Заметки
Может быть использован только в теле функции.

◆ MEMBER_SIZE

#define MEMBER_SIZE (   type,
  member 
)    (sizeof(((type *)0)->member))

Макрос, возвращающий размер поля типа.

◆ MIN

#define MIN (   a,
 
)     (((a)<(b))?(a):(b))

Не-типобезопасный макрос, возвращающий минимальное значение из 2х вариантов.

◆ MIN_SAFE

#define MIN_SAFE (   a,
 
)
Макроопределение:
({ __typeof__ (a) _a = (a); \
__typeof__ (b) _b = (b); \
_a < _b ? _a : _b; })

Типобезопасный макрос, возвращающий минимальное значение из 2х вариантов.

Заметки
Может быть использован только в теле функции.

◆ printk

#define printk   printf

◆ put_unaligned

#define put_unaligned (   val,
  ptr 
)
Макроопределение:
({ \
void *__gu_p = (ptr); \
switch (sizeof(*(ptr))) { \
case 1: \
*(u8 *)__gu_p = (__force u8)(val); \
break; \
case 2: \
put_unaligned_le16((__force u16)(val), __gu_p); \
break; \
case 4: \
put_unaligned_le32((__force u32)(val), __gu_p); \
break; \
case 8: \
put_unaligned_le64((__force u64)(val), __gu_p); \
break; \
default: \
break; \
} \
(void)0; })

◆ ROUND

#define ROUND (   a,
 
)    (((a) + (b) - 1) & ~((b) - 1))

Округление величины a до числа кратного заданному b.

◆ roundup

#define roundup (   x,
 
)    ((((x) + ((y) - 1)) / (y)) * (y))

Округление величины x до большего числа кратного заданному y.

◆ SHELL_NAME

#define SHELL_NAME   "init"

◆ SHELL_PRIORITY

#define SHELL_PRIORITY   100

◆ START_ONCE

#define START_ONCE   do{static int Started = 0;if(Started == 1){return;} Started = 1;}while(0)

Макрос, обеспечивающий запуск функции только один раз (для функций, не имеющих возвращаемого значения).

◆ START_ONCE_R

#define START_ONCE_R (   r)    do{static int Started = 0;if(Started == 1){return (r);} Started = 1;}while(0)

Макрос, обеспечивающий запуск функции только один раз (для функций, имеющих возвращаемое значение).

◆ unlikely

#define unlikely (   x)    __builtin_expect((x),0)

Встроенная функция, дающая компилятору подсказку о том, что условие x - ложно.

◆ VX_SUPERVISOR_MODE

#define VX_SUPERVISOR_MODE   0

Типы

◆ dma_addr_t

typedef unsigned int dma_addr_t

◆ FUNCPTR

typedef int(* FUNCPTR) (int)

◆ irqreturn_t

typedef int irqreturn_t

◆ resource_size_t

typedef unsigned int resource_size_t

Перечисления

◆ STATUS

enum STATUS

Результат выполнения действия (функции).

Элементы перечислений
OK 

Успешное выполнение.

ERROR 

Неудача.

64  {
65  OK = 0,
66  ERROR = -1
67 } STATUS;
STATUS
Результат выполнения.
Definition: multex.h:64
@ OK
Успешное выполнение.
Definition: multex.h:65
@ ERROR
Неудача.
Definition: multex.h:66