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

📄 os.h

📁 是一个手机功能的模拟程序
💻 H
字号:
/* 
+------------------------------------------------------------------------------
|  File:       os.h
+------------------------------------------------------------------------------
|  Copyright 2002 Texas Instruments Berlin, AG 
|                 All rights reserved. 
| 
|                 This file is confidential and a trade secret of Texas 
|                 Instruments Berlin, AG 
|                 The receipt of or possession of this file does not convey 
|                 any rights to reproduce or disclose its contents or to 
|                 manufacture, use, or sell anything it may describe, in 
|                 whole, or in part, without the specific written consent of 
|                 Texas Instruments Berlin, AG. 
+----------------------------------------------------------------------------- 
|  Purpose :  Definitions for the OS adaptation layer.
+----------------------------------------------------------------------------- 
*/ 

#ifndef __OS_H__
#define __OS_H__

#include "os_const.h"

/*==== CONSTANTS ===================================================*/

typedef int OS_HANDLE;
typedef ULONG  OS_TIME;

#define OS_NOTASK     0

#define FIRST_ENTRY   0xff
#define NEXT_ENTRY    0xfe

/*
 * constants to access the object information functions 
 */
#define OS_OBJSYS              0
#define OS_OBJTASK             1
#define OS_OBJQUEUE            2
#define OS_OBJPARTITIONGROUP   3
#define OS_OBJMEMORYPOOL       4
#define OS_OBJTIMER            5
#define OS_OBJSEMAPHORE        6	

/*
 * return values
 */
#define OS_OK                0
#define OS_WAITED            1
#define OS_NEW_PROCESS       2
#define OS_PARTITION_FREE    3
#define OS_ALLOCATED_BIGGER  4
#define OS_ERROR            (-1)
#define OS_TIMEOUT          (-2)
#define OS_PARTITION_GUARD_PATTERN_DESTROYED (-3)


#define OS_NORMAL     1
#define OS_URGENT     2
#define OS_MIN_PRIORITY  OS_NORMAL
#define OS_MAX_PRIORITY  OS_URGENT

#define OS_QFPARTITION     0x01


#define OS_SYST_ERR                 0x8000
#define OS_SYST_ERR_QUEUE_CREATE    0x8001
#define OS_SYST_ERR_MAX_TIMER       0x8002
#define OS_SYST_ERR_MAX_TASK        0x8003 
#define OS_SYST_ERR_STACK_OVERFLOW  0x8004
#define OS_SYST_ERR_PCB_PATTERN     0x8005
#define OS_SYST_ERR_NO_PARTITION    0x8006
#define OS_SYST_ERR_STR_TOO_LONG    0x8007
#define OS_SYST_ERR_OVERSIZE        0x8008 
#define OS_SYST_ERR_TASK_TIMER      0x8009
#define OS_SYST_ERR_SIMUL_TIMER     0x800A
#define OS_SYST_ERR_QUEUE_FULL      0x800B
#define OS_SYST_ERR_MAX_SEMA        0x800C 
#define OS_SYST_ERR_NO_MEMORY       0x800D
#define OS_SYST_ERR_BIG_PARTITION   0x800E


#define OS_SYST_WRN                 0x0000
#define OS_SYST_WRN_WAIT_PARTITION  0x0001
#define OS_SYST_WRN_WAIT_QUEUE      0x0002

/*==== TYPES =======================================================*/

typedef struct 
{
  USHORT            flags;
  USHORT            data16;
  ULONG             data32;
  ULONG             len;
  ULONG             time;
  LONG              e_id;
  T_VOID_STRUCT *   ptr;
} OS_QDATA;

/*==== PROTOTYPES ==================================================*/

GLOBAL LONG os_CreateTask (OS_HANDLE Caller, char *Name, void (*TaskEntry)(OS_HANDLE, ULONG), ULONG StackSize, 
                           USHORT Priority, OS_HANDLE *TaskHandle, OS_HANDLE MemPoolHandle);
GLOBAL LONG os_DestroyTask (OS_HANDLE Caller, OS_HANDLE TaskHandle);
GLOBAL LONG os_StartTask (OS_HANDLE Caller, OS_HANDLE TaskHandle, ULONG Value);
GLOBAL LONG os_StopTask (OS_HANDLE Caller, OS_HANDLE TaskHandle);
GLOBAL LONG os_SuspendTask (OS_HANDLE Caller, ULONG Time);
GLOBAL LONG os_GetTaskName (OS_HANDLE Caller, OS_HANDLE TaskHandle, char * Name);
GLOBAL LONG os_GetTaskHandle (OS_HANDLE Caller, char * Name, OS_HANDLE *TaskHandle);
GLOBAL LONG os_TaskInformation (USHORT Handle, char *Buffer);
GLOBAL LONG os_ProInit ( void );
GLOBAL OS_HANDLE os_MyHandle ( void );
#ifdef _NUCLEUS_
GLOBAL LONG os_CheckTaskStack (OS_HANDLE Handle);
GLOBAL ULONG *os_GetTaskData (OS_HANDLE Caller, OS_HANDLE Handle, unsigned char **stackend);
GLOBAL unsigned char os_GetTaskState (OS_HANDLE Caller, OS_HANDLE Handle);
#endif

GLOBAL LONG os_CreateQueue (OS_HANDLE TaskHandle, OS_HANDLE ComHandle, char *Name, USHORT Entries,
                            OS_HANDLE *ActHandle, OS_HANDLE MemPoolHandle );
GLOBAL LONG os_DestroyQueue (OS_HANDLE TaskHandle, OS_HANDLE ComHandle );
GLOBAL LONG os_OpenQueue (OS_HANDLE TaskHandle, char *Name, OS_HANDLE *ComHandle);
GLOBAL LONG os_CloseQueue ( OS_HANDLE TaskHandle, OS_HANDLE ComHandle);
GLOBAL LONG os_SendToQueue (OS_HANDLE TaskHandle, OS_HANDLE ComHandle, USHORT Priority, 
                            ULONG Suspend, OS_QDATA *Msg );
GLOBAL LONG os_ReceiveFromQueue (OS_HANDLE TaskHandle, OS_HANDLE ComHandle, OS_QDATA *msg, ULONG Timeout );
GLOBAL LONG os_GetQueueName (OS_HANDLE Caller, OS_HANDLE ComHandle, char * Name);
GLOBAL LONG os_GetQueueHandle (OS_HANDLE Caller, char *Name, OS_HANDLE *ComHandle);
GLOBAL LONG os_QueueInformation (USHORT Handle, char *Buffer);
GLOBAL LONG os_ComInit ( void );
#ifdef _NUCLEUS_
GLOBAL LONG os_GetQueueState (OS_HANDLE Caller, OS_HANDLE Handle, ULONG *Used, ULONG *Free);
GLOBAL unsigned char *os_FindSuspendingQueue (ULONG *tcb);
GLOBAL LONG os_GetQueueData ( OS_HANDLE Caller, OS_HANDLE Handle, USHORT Index, 
                              USHORT *Type, ULONG *opc, ULONG *ptr, ULONG *time );
#endif
#ifdef _WIN32_
extern LONG os_create_extq (const char* name, OS_HANDLE* comhandle);
extern LONG os_destroy_extq (const char* name);
#endif /* _WIN32_ */

GLOBAL LONG os_CreatePartitionPool (OS_HANDLE TaskHandle, char *GroupName, void *Addr, USHORT Num, ULONG Size, 
                                     OS_HANDLE *GroupHandle);
GLOBAL LONG os_AllocatePartition (OS_HANDLE TaskHandle, T_VOID_STRUCT **Buffer, ULONG Size, 
                                  ULONG Suspend, OS_HANDLE GroupHandle);
GLOBAL LONG os_DeallocatePartition (OS_HANDLE TaskHandle, T_VOID_STRUCT *Buffer);
GLOBAL LONG os_is_valid_partition (T_VOID_STRUCT *Buffer);
GLOBAL LONG os_CreateMemoryPool (OS_HANDLE TaskHandle, char *Name, void *Addr, ULONG PoolSize, 
                                  OS_HANDLE *PoolHandle);
GLOBAL LONG os_AllocateMemory (OS_HANDLE TaskHandle, T_VOID_STRUCT **Buffer, ULONG Size, 
                               ULONG Suspend, OS_HANDLE PoolHandle);
GLOBAL LONG os_DeallocateMemory (OS_HANDLE TaskHandle, T_VOID_STRUCT *Buffer);
GLOBAL LONG os_PartitionInformation (USHORT Handle, char *Buffer);
GLOBAL LONG os_MemoryInformation (USHORT Handle, char *Buffer);
GLOBAL LONG os_MemInit ( void );
GLOBAL LONG os_GetPartitionPoolStatus (ULONG size, OS_HANDLE gr_hndl, USHORT *free, USHORT *alloc);
#ifdef _NUCLEUS_
GLOBAL LONG os_PartitionCheck (ULONG *ptr);
GLOBAL const ULONG *os_GetPrimpoolCB (int id);
#endif
GLOBAL LONG os_CreateTimer (OS_HANDLE TaskHandle, void(*TimeoutProc)(OS_HANDLE,OS_HANDLE,USHORT), 
                            OS_HANDLE *TimerHandle, OS_HANDLE MemPoolHandle);
GLOBAL LONG os_DestroyTimer ( OS_HANDLE TaskHandle, OS_HANDLE TimerHandle);
GLOBAL LONG os_StartTimer ( OS_HANDLE TaskHandle, OS_HANDLE TimerHandle, USHORT Index,
                              OS_TIME InitialTime, OS_TIME RescheduleTime );
GLOBAL LONG os_StopTimer (OS_HANDLE TaskHandle, OS_HANDLE TimerHandle);
GLOBAL LONG os_QueryTimer ( OS_HANDLE TaskHandle, OS_HANDLE TimerHandle, OS_TIME *RemainingTime);
GLOBAL LONG os_TimerInformation (USHORT Handle, char *Buffer);
GLOBAL LONG os_TimInit ( void );
GLOBAL LONG os_set_tick (int os_system_tick);
GLOBAL ULONG os_get_p_time ( OS_HANDLE t_handle );

GLOBAL LONG os_CreateSemaphore (OS_HANDLE TaskHandle, char *Name, USHORT Count, 
                                OS_HANDLE *Semhandle, OS_HANDLE MemPoolHandle);
GLOBAL LONG os_DestroySemaphore (OS_HANDLE TaskHandle, OS_HANDLE SemHandle);
GLOBAL LONG os_OpenSemaphore (OS_HANDLE TaskHandle, char *Name, OS_HANDLE *SemHandle);
GLOBAL LONG os_CloseSemaphore (OS_HANDLE TaskHandle, OS_HANDLE SemHandle);
GLOBAL LONG os_ObtainSemaphore (OS_HANDLE TaskHandle, OS_HANDLE SemHandle, ULONG Timeout);
GLOBAL LONG os_ReleaseSemaphore (OS_HANDLE TaskHandle, OS_HANDLE SemHandle);
GLOBAL LONG os_QuerySemaphore (OS_HANDLE TaskHandle, OS_HANDLE SemHandle, USHORT *Count);
GLOBAL LONG os_SemaphoreInformation (USHORT Handle, char *Buffer);
GLOBAL LONG os_SemInit ( void );
#ifdef _NUCLEUS_
GLOBAL unsigned char *os_FindSuspendingSema (ULONG *tcb);
#endif

GLOBAL LONG os_GetTime (OS_HANDLE TaskHandle, OS_TIME *Time);
GLOBAL LONG os_Initialize (void);
GLOBAL LONG os_ObjectInformation (OS_HANDLE, USHORT Id, USHORT Handle, USHORT len, void *Buffer);
void os_SystemError (OS_HANDLE Caller, USHORT cause, char *buffer );
#ifdef _NUCLEUS_
LONG os_check_frm_table_size ( void );
#endif
#ifdef _NUCLEUS_
LONG os_dar_register (void);
LONG os_read_dar_ffs_data ( USHORT entry, char *buffer, USHORT len );
#endif
#if defined (_NUCLEUS_) && defined (_TARGET_)
#include "gdi.h"
GLOBAL LONG os_CreateCallback ( void );
GLOBAL LONG os_ExecuteCallback ( OS_HANDLE Caller, void (*Callback)(T_DRV_SIGNAL*), T_DRV_SIGNAL *Signal ); 
#endif
#ifdef CTB
GLOBAL void os_Tick( void );
GLOBAL void os_StartTicking( void );
GLOBAL void os_StopTicking( void );
GLOBAL ULONG os_GetProcessId( void );
#endif 

/*==== END OF OS.H =================================================*/
#endif

⌨️ 快捷键说明

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