VSF Documented
Data Structures | Macros | Typedefs | Enumerations | Functions
win_generic.c File Reference
#include "hal/arch/vsf_arch_abstraction.h"
#include "service/vsf_service.h"
#include "utilities/vsf_utilities.h"
#include "hal/arch/__vsf_arch_interface.h"
#include <Windows.h>

Data Structures

struct  vsf_arch_swi_ctx_t
 
struct  vsf_arch_systimer_ctx_t
 
struct  vsf_x86_t
 
struct  vsf_arch_background_trace_event_t
 
struct  vsf_arch_background_trace_t
 
struct  vsf_arch_heap_mcb_t
 

Macros

#define __VSF_ARCH_WIN_IMPLEMENT
 
#define VSF_ARCH_CFG_LOW_LANTECY   DISABLED
 
#define vsf_arch_yield()   Sleep(0)
 
#define vsf_arch_trace_callstack(...)
 
#define vsf_arch_trace_irq(...)
 
#define vsf_arch_trace_systimer(...)
 
#define vsf_arch_trace_status(...)
 
#define vsf_arch_trace_function(...)
 
#define VSF_ARCH_CFG_BACKGROUND_TRACE_NUM   1024
 
#define __VSF_ARCH_CFG_TRACE   ENABLED
 
#define VSF_ARCH_CFG_NO_UNLOCKED_SUSPEND_EN   ENABLED
 

Typedefs

typedef struct vsf_arch_swi_ctx_t vsf_arch_swi_ctx_t
 
typedef struct vsf_arch_systimer_ctx_t vsf_arch_systimer_ctx_t
 
typedef struct vsf_x86_t vsf_x86_t
 
typedef enum vsf_arch_irq_pp_t vsf_arch_irq_pp_t
 preempt_param
 
typedef enum vsf_arch_trace_event_t vsf_arch_trace_event_t
 
typedef struct vsf_arch_background_trace_event_t vsf_arch_background_trace_event_t
 
typedef struct vsf_arch_background_trace_t vsf_arch_background_trace_t
 
typedef struct vsf_arch_heap_mcb_t vsf_arch_heap_mcb_t
 

Enumerations

enum  vsf_arch_irq_pp_t {
  VSF_ARCH_IRQ_PP_NORMAL ,
  VSF_ARCH_IRQ_PP_EXIT_SUSPEND ,
  VSF_ARCH_IRQ_PP_EXIT_RUNNING
}
 preempt_param More...
 
enum  {
  VSF_ARCH_TRACE_CALLSTACK_COLOR ,
  VSF_ARCH_TRACE_IRQ_COLOR ,
  VSF_ARCH_TRACE_SYSTIMER_COLOR ,
  VSF_ARCH_TRACE_STATUS_COLOR ,
  VSF_ARCH_TRACE_FUNCTION_COLOR
}
 
enum  vsf_arch_trace_event_t {
  VSF_ARCH_TRACE_PREEMPT_ENTER ,
  VSF_ARCH_TRACE_PREEMPT_LEAVE ,
  VSF_ARCH_TRACE_CUR_THREAD ,
  VSF_ARCH_TRACE_ACTIVATE ,
  VSF_ARCH_TRACE_DEACTIVATE ,
  VSF_ARCH_TRACE_SUSPEND ,
  VSF_ARCH_TRACE_RESUME ,
  VSF_ARCH_TRACE_IRQ_STATE ,
  VSF_ARCH_TRACE_ACTIVATED ,
  VSF_ARCH_TRACE_DEACTIVATED ,
  VSF_ARCH_TRACE_STATUS ,
  VSF_ARCH_TRACE_LOCK ,
  VSF_ARCH_TRACE_POP ,
  VSF_ARCH_TRACE_INHERIT ,
  VSF_ARCH_TRACE_PUSH
}
 

Functions

void __vsf_arch_trace_lock (void)
 
void __vsf_arch_trace_unlock (void)
 
void __vsf_arch_irq_start (vsf_arch_irq_thread_t *irq_thread)
 
void __vsf_arch_irq_end (vsf_arch_irq_thread_t *irq_thread, bool is_terminate)
 
void __vsf_arch_irq_fini (vsf_arch_irq_thread_t *irq_thread)
 
void __vsf_arch_irq_init (vsf_arch_irq_thread_t *irq_thread, char *name, vsf_arch_irq_entry_t entry, vsf_arch_prio_t priority)
 
vsf_arch_irq_thread_t__vsf_arch_irq_get_cur (void)
 
void __vsf_arch_irq_set_background (vsf_arch_irq_thread_t *irq_thread)
 
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)
 
vsf_err_t vsf_arch_swi_init (uint_fast8_t idx, vsf_arch_prio_t priority, vsf_swi_handler_t *handler, void *param)
 initialise a software interrupt !
 
void vsf_arch_swi_trigger (uint_fast8_t idx)
 trigger a software interrupt !
 
vsf_arch_prio_t vsf_set_base_priority (vsf_arch_prio_t priority)
 
bool vsf_arch_low_level_init (void)
 
vsf_gint_state_t vsf_get_interrupt (void)
 
vsf_gint_state_t vsf_set_interrupt (vsf_gint_state_t level)
 
vsf_gint_state_t vsf_disable_interrupt (void)
 
vsf_gint_state_t vsf_enable_interrupt (void)
 
void __vsf_arch_irq_sleep (uint_fast32_t ms)
 
void vsf_arch_sleep (uint_fast32_t mode)
 
void __vsf_systimer_thread (void *arg)
 
vsf_err_t vsf_systimer_init (void)
 initialise SysTick to generate a system timer !
 
void vsf_systimer_set_idle (void)
 
vsf_systimer_tick_t __vsf_systimer_get (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)
 
vsf_err_t vsf_systimer_start (void)
 
void vsf_systimer_prio_set (vsf_arch_prio_t priority)
 
void vsf_arch_shutdown (void)
 
void vsf_arch_reset (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)
 
int WINAPI WinMain (HINSTANCE hinstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
 

Macro Definition Documentation

◆ __VSF_ARCH_WIN_IMPLEMENT

#define __VSF_ARCH_WIN_IMPLEMENT

◆ VSF_ARCH_CFG_LOW_LANTECY

#define VSF_ARCH_CFG_LOW_LANTECY   DISABLED

◆ vsf_arch_yield

#define vsf_arch_yield ( )    Sleep(0)

◆ vsf_arch_trace_callstack

#define vsf_arch_trace_callstack (   ...)
Value:
vsf_arch_trace(VSF_ARCH_TRACE_HEADER, \
__vsf_x86_trace_color[VSF_ARCH_TRACE_CALLSTACK_COLOR], __VA_ARGS__)
@ VSF_ARCH_TRACE_CALLSTACK_COLOR
Definition win_generic.c:175
#define vsf_arch_trace(__header, __color,...)
Definition win_generic.h:113

◆ vsf_arch_trace_irq

#define vsf_arch_trace_irq (   ...)
Value:
vsf_arch_trace(VSF_ARCH_TRACE_HEADER, \
__vsf_x86_trace_color[VSF_ARCH_TRACE_IRQ_COLOR], __VA_ARGS__)
@ VSF_ARCH_TRACE_IRQ_COLOR
Definition win_generic.c:176

◆ vsf_arch_trace_systimer

#define vsf_arch_trace_systimer (   ...)
Value:
vsf_arch_trace(VSF_ARCH_TRACE_HEADER, \
__vsf_x86_trace_color[VSF_ARCH_TRACE_SYSTIMER_COLOR], __VA_ARGS__)
@ VSF_ARCH_TRACE_SYSTIMER_COLOR
Definition win_generic.c:177

◆ vsf_arch_trace_status

#define vsf_arch_trace_status (   ...)
Value:
vsf_arch_trace(VSF_ARCH_TRACE_HEADER, \
__vsf_x86_trace_color[VSF_ARCH_TRACE_STATUS_COLOR], __VA_ARGS__)
@ VSF_ARCH_TRACE_STATUS_COLOR
Definition win_generic.c:178

◆ vsf_arch_trace_function

#define vsf_arch_trace_function (   ...)
Value:
vsf_arch_trace(VSF_ARCH_TRACE_HEADER, \
__vsf_x86_trace_color[VSF_ARCH_TRACE_FUNCTION_COLOR], __VA_ARGS__)
@ VSF_ARCH_TRACE_FUNCTION_COLOR
Definition win_generic.c:179

◆ VSF_ARCH_CFG_BACKGROUND_TRACE_NUM

#define VSF_ARCH_CFG_BACKGROUND_TRACE_NUM   1024

◆ __VSF_ARCH_CFG_TRACE

#define __VSF_ARCH_CFG_TRACE   ENABLED

◆ VSF_ARCH_CFG_NO_UNLOCKED_SUSPEND_EN

#define VSF_ARCH_CFG_NO_UNLOCKED_SUSPEND_EN   ENABLED

Typedef Documentation

◆ vsf_arch_swi_ctx_t

◆ vsf_arch_systimer_ctx_t

◆ vsf_x86_t

typedef struct vsf_x86_t vsf_x86_t

◆ vsf_arch_irq_pp_t

preempt_param

◆ vsf_arch_trace_event_t

◆ vsf_arch_background_trace_event_t

◆ vsf_arch_background_trace_t

◆ vsf_arch_heap_mcb_t

Enumeration Type Documentation

◆ vsf_arch_irq_pp_t

preempt_param

Enumerator
VSF_ARCH_IRQ_PP_NORMAL 
VSF_ARCH_IRQ_PP_EXIT_SUSPEND 
VSF_ARCH_IRQ_PP_EXIT_RUNNING 

◆ anonymous enum

anonymous enum
Enumerator
VSF_ARCH_TRACE_CALLSTACK_COLOR 
VSF_ARCH_TRACE_IRQ_COLOR 
VSF_ARCH_TRACE_SYSTIMER_COLOR 
VSF_ARCH_TRACE_STATUS_COLOR 
VSF_ARCH_TRACE_FUNCTION_COLOR 

◆ vsf_arch_trace_event_t

Enumerator
VSF_ARCH_TRACE_PREEMPT_ENTER 
VSF_ARCH_TRACE_PREEMPT_LEAVE 
VSF_ARCH_TRACE_CUR_THREAD 
VSF_ARCH_TRACE_ACTIVATE 
VSF_ARCH_TRACE_DEACTIVATE 
VSF_ARCH_TRACE_SUSPEND 
VSF_ARCH_TRACE_RESUME 
VSF_ARCH_TRACE_IRQ_STATE 
VSF_ARCH_TRACE_ACTIVATED 
VSF_ARCH_TRACE_DEACTIVATED 
VSF_ARCH_TRACE_STATUS 
VSF_ARCH_TRACE_LOCK 
VSF_ARCH_TRACE_POP 
VSF_ARCH_TRACE_INHERIT 
VSF_ARCH_TRACE_PUSH 

Function Documentation

◆ __vsf_arch_trace_lock()

void __vsf_arch_trace_lock ( void  )

◆ __vsf_arch_trace_unlock()

void __vsf_arch_trace_unlock ( void  )

◆ __vsf_arch_irq_start()

void __vsf_arch_irq_start ( vsf_arch_irq_thread_t irq_thread)

◆ __vsf_arch_irq_end()

void __vsf_arch_irq_end ( vsf_arch_irq_thread_t irq_thread,
bool  is_terminate 
)

◆ __vsf_arch_irq_fini()

void __vsf_arch_irq_fini ( vsf_arch_irq_thread_t irq_thread)

◆ __vsf_arch_irq_init()

void __vsf_arch_irq_init ( vsf_arch_irq_thread_t irq_thread,
char *  name,
vsf_arch_irq_entry_t  entry,
vsf_arch_prio_t  priority 
)

◆ __vsf_arch_irq_get_cur()

vsf_arch_irq_thread_t * __vsf_arch_irq_get_cur ( void  )

◆ __vsf_arch_irq_set_background()

void __vsf_arch_irq_set_background ( vsf_arch_irq_thread_t irq_thread)

◆ __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_swi_init()

vsf_err_t vsf_arch_swi_init ( uint_fast8_t  idx,
vsf_arch_prio_t  priority,
vsf_swi_handler_t handler,
void *  param 
)

initialise a software interrupt !

Parameters
idxthe index of the software interrupt !
Returns
initialization result in vsf_err_t

◆ vsf_arch_swi_trigger()

void vsf_arch_swi_trigger ( uint_fast8_t  idx)

trigger a software interrupt !

Parameters
idxthe index of the software interrupt

todo: the code is simplified, we need to verify its reilability

◆ vsf_set_base_priority()

vsf_arch_prio_t vsf_set_base_priority ( 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_get_interrupt()

vsf_gint_state_t vsf_get_interrupt ( void  )

◆ vsf_set_interrupt()

vsf_gint_state_t vsf_set_interrupt ( vsf_gint_state_t  level)

◆ vsf_disable_interrupt()

vsf_gint_state_t vsf_disable_interrupt ( void  )

◆ vsf_enable_interrupt()

vsf_gint_state_t vsf_enable_interrupt ( void  )

◆ __vsf_arch_irq_sleep()

void __vsf_arch_irq_sleep ( uint_fast32_t  ms)

◆ vsf_arch_sleep()

void vsf_arch_sleep ( uint_fast32_t  mode)

◆ __vsf_systimer_thread()

void __vsf_systimer_thread ( void *  arg)

◆ 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_set_idle()

void vsf_systimer_set_idle ( void  )

◆ __vsf_systimer_get()

vsf_systimer_tick_t __vsf_systimer_get ( 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_start()

vsf_err_t vsf_systimer_start ( void  )

◆ vsf_systimer_prio_set()

void vsf_systimer_prio_set ( vsf_arch_prio_t  priority)

◆ vsf_arch_shutdown()

void vsf_arch_shutdown ( void  )

◆ vsf_arch_reset()

void vsf_arch_reset ( void  )

◆ 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)

◆ WinMain()

int WINAPI WinMain ( HINSTANCE  hinstance,
HINSTANCE  hPrevInstance,
LPSTR  lpCmdLine,
int  nCmdShow 
)