VSF Documented
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(...)
 
#define vsf_arch_request_trace(__request, __event)
 
#define __vsf_arch_crit_init(__crit)
 
#define __vsf_arch_crit_enter(__crit)
 
#define __vsf_arch_crit_leave(__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 ( ...)
Value:
#define VSF_ARCH_CFG_TRACE_FUNC
Definition linux_generic.c:57

◆ 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)
Value:
#define NULL
Definition lvgl.h:26
#define pthread_mutex_init
Definition pthread.h:66

◆ __vsf_arch_crit_enter

#define __vsf_arch_crit_enter ( __crit)
Value:
#define pthread_mutex_lock
Definition pthread.h:68

◆ __vsf_arch_crit_leave

#define __vsf_arch_crit_leave ( __crit)
Value:
#define pthread_mutex_unlock
Definition pthread.h:71

◆ __VSF_ARCH_WITHOUT_THREAD_SUSPEND_TEMPLATE__

#define __VSF_ARCH_WITHOUT_THREAD_SUSPEND_TEMPLATE__

Typedef Documentation

◆ vsf_arch_crit_t

◆ vsf_arch_systimer_ctx_t

typedef struct vsf_arch_systimer_ctx_t vsf_arch_systimer_ctx_t

◆ vsf_arch_t

typedef struct vsf_arch_t vsf_arch_t

◆ vsf_arch_heap_mcb_t

typedef struct vsf_arch_heap_mcb_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
Generated from commit: vsfteam/vsf@9e2cb73