VSF Documented
Data Structures | Macros | Typedefs | Functions | Variables
linux_generic.c File Reference
#include "hal/arch/vsf_arch_abstraction.h"
#include "hal/arch/__vsf_arch_interface.h"
#include <unistd.h>
#include <fcntl.h>
#include <signal.h>
#include <time.h>
#include <pthread.h>
#include <setjmp.h>
#include <sys/mman.h>
#include "hal/arch/common/arch_without_thread_suspend/vsf_arch_without_thread_suspend_template.inc"

Data Structures

struct  vsf_arch_systimer_ctx_t
 
struct  vsf_arch_t
 
struct  vsf_arch_heap_mcb_t
 

Macros

#define __VSF_ARCH_LINUX_IMPLEMENT
 
#define VSF_ARCH_CFG_THREAD_NUM   32
 
#define VSF_ARCH_CFG_IRQ_REQUEST_NUM   (VSF_ARCH_CFG_THREAD_NUM + 32)
 
#define VSF_ARCH_CFG_TRACE_FUNC   printf
 
#define VSF_ARCH_CFG_IRQ_TRACE_EN   DISABLED
 
#define VSF_ARCH_CFG_REQUEST_TRACE_EN   DISABLED
 
#define __VSF_ARCH_LINUX_CFG_SYSTIMER_SIGNAL   ENABLED
 
#define vsf_arch_irq_trace(...)   VSF_ARCH_CFG_TRACE_FUNC(__VA_ARGS__)
 
#define vsf_arch_request_trace(__request, __event)
 
#define __vsf_arch_crit_init(__crit)   pthread_mutex_init(&(__crit), NULL)
 
#define __vsf_arch_crit_enter(__crit)   pthread_mutex_lock(&(__crit))
 
#define __vsf_arch_crit_leave(__crit)   pthread_mutex_unlock(&(__crit))
 
#define __VSF_ARCH_WITHOUT_THREAD_SUSPEND_TEMPLATE__
 

Typedefs

typedef pthread_mutex_t vsf_arch_crit_t
 
typedef struct vsf_arch_systimer_ctx_t vsf_arch_systimer_ctx_t
 
typedef struct vsf_arch_t vsf_arch_t
 
typedef struct vsf_arch_heap_mcb_t vsf_arch_heap_mcb_t
 

Functions

 dcl_vsf_bitmap (vsf_arch_thread_bitmap, VSF_ARCH_CFG_THREAD_NUM)
 
 dcl_vsf_bitmap (vsf_arch_irq_request_bitmap, VSF_ARCH_CFG_IRQ_REQUEST_NUM)
 
void __vsf_arch_irq_request_init (vsf_arch_irq_request_t *request)
 
void __vsf_arch_irq_request_fini (vsf_arch_irq_request_t *request)
 
void __vsf_arch_irq_request_pend (vsf_arch_irq_request_t *request)
 
void __vsf_arch_irq_request_send (vsf_arch_irq_request_t *request)
 
void __vsf_arch_irq_exit (vsf_arch_irq_thread_t *irq_thread)
 
vsf_err_t __vsf_arch_irq_restart (vsf_arch_irq_thread_t *irq_thread, vsf_arch_irq_request_t *request_pending)
 
void __vsf_arch_irq_sleep (uint32_t ms)
 
vsf_err_t vsf_systimer_init (void)
 initialise SysTick to generate a system timer !
 
vsf_err_t vsf_systimer_start (void)
 
void vsf_systimer_set_idle (void)
 
vsf_systimer_tick_t vsf_systimer_get (void)
 
bool vsf_systimer_set (vsf_systimer_tick_t due)
 
bool vsf_systimer_is_due (vsf_systimer_tick_t due)
 
vsf_systimer_tick_t vsf_systimer_us_to_tick (uint_fast32_t time_us)
 
vsf_systimer_tick_t vsf_systimer_ms_to_tick (uint_fast32_t time_ms)
 
vsf_systimer_tick_t vsf_systimer_tick_to_us (vsf_systimer_tick_t tick)
 
vsf_systimer_tick_t vsf_systimer_tick_to_ms (vsf_systimer_tick_t tick)
 
void vsf_systimer_prio_set (vsf_arch_prio_t priority)
 
bool vsf_arch_low_level_init (void)
 
void * vsf_arch_heap_malloc (uint_fast32_t size, uint_fast32_t alignment)
 
void * vsf_arch_heap_realloc (void *buffer, uint_fast32_t size)
 
void vsf_arch_heap_free (void *buffer)
 
unsigned int vsf_arch_heap_alignment (void)
 
uint_fast32_t vsf_arch_heap_size (void *buffer)
 
void * vsf_arch_alloc_exe (uint_fast32_t size)
 
void vsf_arch_free_exe (void *ptr)
 
int vsf_arch_argu (char ***argv)
 
void vsf_arch_shutdown (void)
 
void vsf_arch_reset (void)
 

Variables

 vsf_arch_thread_t
 
 vsf_arch_irq_request_priv_t
 

Macro Definition Documentation

◆ __VSF_ARCH_LINUX_IMPLEMENT

#define __VSF_ARCH_LINUX_IMPLEMENT

◆ VSF_ARCH_CFG_THREAD_NUM

#define VSF_ARCH_CFG_THREAD_NUM   32

◆ VSF_ARCH_CFG_IRQ_REQUEST_NUM

#define VSF_ARCH_CFG_IRQ_REQUEST_NUM   (VSF_ARCH_CFG_THREAD_NUM + 32)

◆ VSF_ARCH_CFG_TRACE_FUNC

#define VSF_ARCH_CFG_TRACE_FUNC   printf

◆ VSF_ARCH_CFG_IRQ_TRACE_EN

#define VSF_ARCH_CFG_IRQ_TRACE_EN   DISABLED

◆ VSF_ARCH_CFG_REQUEST_TRACE_EN

#define VSF_ARCH_CFG_REQUEST_TRACE_EN   DISABLED

◆ __VSF_ARCH_LINUX_CFG_SYSTIMER_SIGNAL

#define __VSF_ARCH_LINUX_CFG_SYSTIMER_SIGNAL   ENABLED

◆ vsf_arch_irq_trace

#define vsf_arch_irq_trace (   ...)    VSF_ARCH_CFG_TRACE_FUNC(__VA_ARGS__)

◆ vsf_arch_request_trace

#define vsf_arch_request_trace (   __request,
  __event 
)
Value:
do { \
int idx = __vsf_arch_get_thread_idx((__request)->arch_thread); \
if (idx >= 0) { \
VSF_ARCH_CFG_TRACE_FUNC("irq_request%d %p " __event "\n", idx, (__request));\
} else { \
VSF_ARCH_CFG_TRACE_FUNC("irq_request %p " __event "\n", (__request));\
} \
} while (false)

◆ __vsf_arch_crit_init

#define __vsf_arch_crit_init (   __crit)    pthread_mutex_init(&(__crit), NULL)

◆ __vsf_arch_crit_enter

#define __vsf_arch_crit_enter (   __crit)    pthread_mutex_lock(&(__crit))

◆ __vsf_arch_crit_leave

#define __vsf_arch_crit_leave (   __crit)    pthread_mutex_unlock(&(__crit))

◆ __VSF_ARCH_WITHOUT_THREAD_SUSPEND_TEMPLATE__

#define __VSF_ARCH_WITHOUT_THREAD_SUSPEND_TEMPLATE__

Typedef Documentation

◆ vsf_arch_crit_t

◆ vsf_arch_systimer_ctx_t

◆ vsf_arch_t

typedef struct vsf_arch_t vsf_arch_t

◆ vsf_arch_heap_mcb_t

Function Documentation

◆ dcl_vsf_bitmap() [1/2]

dcl_vsf_bitmap ( vsf_arch_thread_bitmap  ,
VSF_ARCH_CFG_THREAD_NUM   
)

◆ dcl_vsf_bitmap() [2/2]

dcl_vsf_bitmap ( vsf_arch_irq_request_bitmap  ,
VSF_ARCH_CFG_IRQ_REQUEST_NUM   
)

◆ __vsf_arch_irq_request_init()

void __vsf_arch_irq_request_init ( vsf_arch_irq_request_t request)

◆ __vsf_arch_irq_request_fini()

void __vsf_arch_irq_request_fini ( vsf_arch_irq_request_t request)

◆ __vsf_arch_irq_request_pend()

void __vsf_arch_irq_request_pend ( vsf_arch_irq_request_t request)

◆ __vsf_arch_irq_request_send()

void __vsf_arch_irq_request_send ( vsf_arch_irq_request_t request)

◆ __vsf_arch_irq_exit()

void __vsf_arch_irq_exit ( vsf_arch_irq_thread_t irq_thread)

◆ __vsf_arch_irq_restart()

vsf_err_t __vsf_arch_irq_restart ( vsf_arch_irq_thread_t irq_thread,
vsf_arch_irq_request_t request_pending 
)

◆ __vsf_arch_irq_sleep()

void __vsf_arch_irq_sleep ( uint32_t  ms)

◆ vsf_systimer_init()

vsf_err_t vsf_systimer_init ( void  )

initialise SysTick to generate a system timer !

Parameters
frequencythe target tick frequency in Hz !
Returns
initialization result in vsf_err_t

◆ vsf_systimer_start()

vsf_err_t vsf_systimer_start ( void  )

◆ vsf_systimer_set_idle()

void vsf_systimer_set_idle ( void  )

◆ vsf_systimer_get()

vsf_systimer_tick_t vsf_systimer_get ( void  )

◆ vsf_systimer_set()

bool vsf_systimer_set ( vsf_systimer_tick_t  due)

◆ vsf_systimer_is_due()

bool vsf_systimer_is_due ( vsf_systimer_tick_t  due)

◆ vsf_systimer_us_to_tick()

vsf_systimer_tick_t vsf_systimer_us_to_tick ( uint_fast32_t  time_us)

◆ vsf_systimer_ms_to_tick()

vsf_systimer_tick_t vsf_systimer_ms_to_tick ( uint_fast32_t  time_ms)

◆ vsf_systimer_tick_to_us()

vsf_systimer_tick_t vsf_systimer_tick_to_us ( vsf_systimer_tick_t  tick)

◆ vsf_systimer_tick_to_ms()

vsf_systimer_tick_t vsf_systimer_tick_to_ms ( vsf_systimer_tick_t  tick)

◆ vsf_systimer_prio_set()

void vsf_systimer_prio_set ( vsf_arch_prio_t  priority)

◆ vsf_arch_low_level_init()

bool vsf_arch_low_level_init ( void  )
Note
initialize architecture specific service
Parameters
none
Return values
trueinitialization succeeded.
falseinitialization failed

◆ vsf_arch_heap_malloc()

void * vsf_arch_heap_malloc ( uint_fast32_t  size,
uint_fast32_t  alignment 
)

◆ vsf_arch_heap_realloc()

void * vsf_arch_heap_realloc ( void *  buffer,
uint_fast32_t  size 
)

◆ vsf_arch_heap_free()

void vsf_arch_heap_free ( void *  buffer)

◆ vsf_arch_heap_alignment()

unsigned int vsf_arch_heap_alignment ( void  )

◆ vsf_arch_heap_size()

uint_fast32_t vsf_arch_heap_size ( void *  buffer)

◆ vsf_arch_alloc_exe()

void * vsf_arch_alloc_exe ( uint_fast32_t  size)

◆ vsf_arch_free_exe()

void vsf_arch_free_exe ( void *  ptr)

◆ vsf_arch_argu()

int vsf_arch_argu ( char ***  argv)

◆ vsf_arch_shutdown()

void vsf_arch_shutdown ( void  )

◆ vsf_arch_reset()

void vsf_arch_reset ( void  )

Variable Documentation

◆ vsf_arch_thread_t

vsf_arch_thread_t

◆ vsf_arch_irq_request_priv_t

vsf_arch_irq_request_priv_t