⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 oswrap.h

📁 ct952 source code use for Digital Frame Photo
💻 H
字号:
#ifndef __OSWRAP_H__
#define __OSWRAP_H__

#ifdef __cplusplus
        extern  "C"     {
#endif
#include	"os_sub.h"

typedef struct tagTHREAD_INFO
{
	DWORD		priority;	// priority value
	void		*fpThreadEntry;	// Thread Entry
	DWORD 	dwEntryData;	// data value pass to the thread entry routine
	char		*ThreadName;// thread name string	
	void		*StackBase;	// Base address of stack
	DWORD		StackSize;	// Stack bytes size
	HANDLE_T	handle;	// Store the returned handle value
	THREAD_SPACE	space;		// Thread information is stored in the thread memory object pointed by this parameter
} THREAD_INFO, *LPTHREAD_INFO;

typedef struct  tagALARM_INFO
{
	void		*fpAlarmFunction;	// Pointer to an alarm handler
	WORD	wEntryData;	// data value pass to the alarm handler
	DWORD	dwInterval;		// the interval for alarm to coour
} ALARM_INFO, *LPALARM_INFO;
extern HANDLE_T    __ClockHandle;  // must remove main flow declaration when porting OK

//---------------------------------------------------------------------------
// MACROs for Interrupt/ Code Generation/ ...

// Interrupt control macros
// Diable interrupt (raise current interrupt level to highest, i.e. 15) and keep current
//   status (PSR) at 32-bit variable _old_
#define OS_DISABLE_INTERRUPTS(_old_)    HAL_DISABLE_INTERRUPTS(_old_)

// Modify PSR to enable interrupt
#define OS_ENABLE_INTERRUPTS()          HAL_ENABLE_INTERRUPTS()

// Restore interrupt status (PSR) saved at 32-bit variable _old_
#define OS_RESTORE_INTERRUPTS(_old_)    HAL_RESTORE_INTERRUPTS(_old_)

// Get current interrupt status (PSR) and saved at 32-bit variable _old_
#define OS_QUERY_INTERRUPTS(_old_)      HAL_QUERY_INTERRUPTS(_old_)

// Execution reorder barrier.
// When optimizing the compiler can reorder code. In multithreaded systems
// where the order of actions is vital, this can sometimes cause problems.
// This macro may be inserted into places where reordering should not happen.

#define OS_REORDER_BARRIER()            HAL_REORDER_BARRIER()


//---------------------------------------------------------------------------
// Mutex APIs
//void cyg_mutex_init (cyg_mutex_t *mutex); 
void	OS_InitMutex( MUTEX_T *Mutex);

//BOOL cyg_mutex_lock (cyg_mutex_t *mutex);
BOOL	OS_LockMutex( MUTEX_T	*Mutex);

//void cyg_mutex_unlock (cyg_mutex_t *mutex);
void	OS_UnlockMutex( MUTEX_T	*mutex);

//---------------------------------------------------------------------------
// FLAGS
//void cyg_flag_init (cyg_flag_t *flag);
void	OS_InitFlag( FLAG_T	*Flag);
 
//void cyg_flag_destroy (cyg_flag_t *flag);
void	OS_DestroyFlag( FLAG_T	*Flag);

//void cyg_flag_setbits (cyg_flag_t *flag, DWORD dwValue);
void	OS_SetFlag( FLAG_T	*Flag, DWORD	dwValue);

//void cyg_flag_maskbits (cyg_flag_t *flag, DWORD dwValue);
void	OS_ClearFlag( FLAG_T	*Flag, DWORD	dwValue);

//DWORD cyg_flag_peek (cyg_flag_t *flag);
DWORD	OS_PeekFlag( FLAG_T	*Flag);

#define	FLAG_WAITMODE_AND	0	// all bits must be set
#define FLAG_WAITMODE_OR	2	// any bit must be set
#define FLAG_WAITMODE_CLR	1	// clear when satisfied

DWORD	OS_TimedWaitFlag(
	FLAG_T	*Flag,	// pointer to a flag object
	DWORD dwPattern,			// bit setting that will cause the calling thread to be woken up
	BYTE bMode,					
	DWORD dwTimeCount		// absolute time to wait
);
// return 0 if timeout first, otherwise return the flag value

//---------------------------------------------------------------------------
// THREAD operation
void	OS_YieldThread(void);                                               //ok
void	OS_SuspendThread(HANDLE_T Handle);                  //ok
void	OS_KillThread(HANDLE_T Handle);
void	OS_ResumeThread(HANDLE_T Handle);                   //ok

void	OS_CreateThread(LPTHREAD_INFO lpThreadInfo);    //ok

BOOL	OS_Identify_Version(void);
void	OS_InitialTimer(void);
DWORD   OS_GetSysTimer(void);
ULONGLONG OS_GetSysTimer64(void);
void	OS_DelayTime(DWORD dwTimeCount);
void	OS_InitialAlarm(LPALARM_INFO lpAlarmInfo);
DWORD	OS_WaitFlag(
	FLAG_T	*Flag,			// pointer to a flag object
	DWORD dwPattern,			// bit setting that will cause the calling thread to be woken up
	BYTE bMode				
);
void	OS_DestroyMutex(MUTEX_T	*Mutex )	;		
BOOL	OS_TryLockMutex(MUTEX_T	*Mutex );		
void	OS_DisableAlarm(HANDLE_T Alarm);
void	OS_EnableAlarm(HANDLE_T Alarm);

#ifdef __cplusplus
}
#endif //__cplusplus

#endif	//#ifndef __OSWRAP_H__ 


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -