VSF Documented
macos_generic.h
Go to the documentation of this file.
1/*****************************************************************************
2 * Copyright(C)2009-2022 by VSF Team *
3 * *
4 * Licensed under the Apache License, Version 2.0 (the "License"); *
5 * you may not use this file except in compliance with the License. *
6 * You may obtain a copy of the License at *
7 * *
8 * http://www.apache.org/licenses/LICENSE-2.0 *
9 * *
10 * Unless required by applicable law or agreed to in writing, software *
11 * distributed under the License is distributed on an "AS IS" BASIS, *
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
13 * See the License for the specific language governing permissions and *
14 * limitations under the License. *
15 * *
16 ****************************************************************************/
17
18#ifndef __MACOS_GENERIC_H__
19#define __MACOS_GENERIC_H__
20
21/*============================ INCLUDES ======================================*/
22
23#include "hal/vsf_hal_cfg.h"
25
26#if defined(__VSF_ARCH_MACOS_IMPLEMENT)
27# define __VSF_CLASS_IMPLEMENT__
28#endif
29
30#include "utilities/ooc_class.h"
31
32#ifdef __cplusplus
33extern "C" {
34#endif
35
36/*============================ MACROS ========================================*/
37
38#ifndef __LITTLE_ENDIAN
39# define __LITTLE_ENDIAN 1
40#endif
41#ifndef __BYTE_ORDER
42# define __BYTE_ORDER __LITTLE_ENDIAN
43#endif
44
45#ifndef VSF_ARCH_PRI_NUM
46# define VSF_ARCH_PRI_NUM 1
47#endif
48#if VSF_ARCH_PRI_NUM != 1
49# error VSF_ARCH_PRI_NUM MUST be 1 for macos
50#endif
51
52#ifndef VSF_SYSTIMER_CFG_IMPL_MODE
53# define VSF_SYSTIMER_CFG_IMPL_MODE VSF_SYSTIMER_IMPL_REQUEST_RESPONSE
54#endif
55
56// software interrupt provided by arch
57#ifndef VSF_ARCH_SWI_NUM
58# define VSF_ARCH_SWI_NUM 0
59#endif
60#if VSF_ARCH_SWI_NUM != 0
61# error VSF_ARCH_SWI_NUM MUST be 0 for macos
62#endif
63
64#define VSF_ARCH_STACK_ALIGN_BIT 4
65#define VSF_ARCH_LIMIT_NO_SET_STACK
66
67#define VSF_ARCH_STACK_PAGE_SIZE 4096
68#define VSF_ARCH_STACK_GUARDIAN_SIZE 4096
69
70/*============================ MACROFIED FUNCTIONS ===========================*/
71
72#define __VSF_ARCH_PRI(__N, __BIT) \
73 VSF_ARCH_PRIO_##__N = (__N), \
74 vsf_arch_prio_##__N = (__N),
75
76#define vsf_arch_wakeup()
77
78/*============================ TYPES =========================================*/
79
80// unit is ns
82
83typedef enum vsf_arch_prio_t {
89
90typedef void (*vsf_arch_irq_entry_t)(void*);
91
93 private_member(
94 int id;
95 void *irq_thread_to_exit;
96 void *arch_thread;
97 bool is_triggered;
98 bool is_inited;
99 )
100};
101
102typedef volatile bool vsf_gint_state_t;
103
104/*============================ INCLUDES ======================================*/
105
107
108/*============================ TYPES =========================================*/
109
111 private_member(
113 void *exit;
114 bool is_to_restart;
115 )
116};
117
118/*============================ GLOBAL VARIABLES ==============================*/
119/*============================ LOCAL VARIABLES ===============================*/
120/*============================ PROTOTYPES ====================================*/
121
122extern void __vsf_arch_irq_sleep(uint32_t ms);
123
128
129extern void __vsf_arch_irq_init(vsf_arch_irq_thread_t *irq_thread, char *name,
130 vsf_arch_irq_entry_t entry, vsf_arch_prio_t priority);
131extern void __vsf_arch_irq_fini(vsf_arch_irq_thread_t *irq_thread);
133extern void __vsf_arch_irq_start(vsf_arch_irq_thread_t *irq_thread);
134extern void __vsf_arch_irq_end(vsf_arch_irq_thread_t *irq_thread, bool is_terminate);
135
136extern void __vsf_arch_irq_exit(vsf_arch_irq_thread_t *irq_thread);
138 vsf_arch_irq_request_t *request_pending);
139
140#ifdef __cplusplus
141}
142#endif
143
144#endif
145/* EOF */
vsf_err_t
Definition __type.h:42
Definition linux_generic.h:104
Definition linux_generic.h:122
vsf_arch_prio_t
Definition cortex_a_generic.h:88
@ VSF_ARCH_PRIO_INVALID
Definition macos_generic.h:84
@ vsf_arch_prio_highest
Definition macos_generic.h:87
@ vsf_arch_prio_invalid
Definition macos_generic.h:85
void __vsf_arch_irq_set_background(vsf_arch_irq_thread_t *irq_thread)
Definition win_generic.c:724
#define __VSF_ARCH_PRI(__N, __BIT)
Definition macos_generic.h:72
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)
Definition win_generic.c:691
vsf_err_t __vsf_arch_irq_restart(vsf_arch_irq_thread_t *irq_thread, vsf_arch_irq_request_t *request_pending)
Definition linux_generic.c:309
void __vsf_arch_irq_request_fini(vsf_arch_irq_request_t *request)
Definition linux_generic.c:188
uint64_t vsf_systimer_tick_t
Definition macos_generic.h:81
void __vsf_arch_irq_sleep(uint32_t ms)
Definition linux_generic.c:321
volatile bool vsf_gint_state_t
Definition macos_generic.h:102
void __vsf_arch_irq_end(vsf_arch_irq_thread_t *irq_thread, bool is_terminate)
Definition win_generic.c:669
void __vsf_arch_irq_fini(vsf_arch_irq_thread_t *irq_thread)
Definition win_generic.c:679
void __vsf_arch_irq_request_pend(vsf_arch_irq_request_t *request)
Definition linux_generic.c:205
void(* vsf_arch_irq_entry_t)(void *)
Definition macos_generic.h:90
void __vsf_arch_irq_start(vsf_arch_irq_thread_t *irq_thread)
Definition win_generic.c:659
void __vsf_arch_irq_request_send(vsf_arch_irq_request_t *request)
Definition linux_generic.c:228
void __vsf_arch_irq_request_init(vsf_arch_irq_request_t *request)
Definition linux_generic.c:167
void __vsf_arch_irq_exit(vsf_arch_irq_thread_t *irq_thread)
Definition linux_generic.c:303
#define VSF_ARCH_PRI_NUM
Definition macos_generic.h:46
#define VSF_ARCH_PRI_BIT
Definition mcs51_generic.h:42
#define vsf_class(__name)
Definition ooc_class.h:48
unsigned uint32_t
Definition stdint.h:9
unsigned long long uint64_t
Definition stdint.h:11
#define exit
Definition stdlib.h:33
Definition vsf_arch_without_thread_suspend_template.h:23
#define VSF_MREPEAT(__COUNT, __MACRO, __PARAM)
Definition vsf_repeat_macro.h:51