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

📄 os_cpu.h

📁 GCC下microC/OS-II 开发平台
💻 H
字号:
/* *                                                uC/OS-II *                                          The Real-Time Kernel * *                                               Linux Port * * File        : $Source: /proj/cvs-gfa/Micrium/Software/uCOS-II/Ports/linux-hal/os_cpu.h,v $ * By          : (c) George Fankhauser, Sensaco Consulting GmbH,  *               Switzerland, http://www.sensaco.com   * Version     : $Revision: 1.1.1.1 $ * * Changed by  : $Author: gfa $ *               $Date: 2003/11/20 10:19:14 $ * * $Log: os_cpu.h,v $ * Revision 1.1.1.1  2003/11/20 10:19:14  gfa * check in ucos II for linux * *//** \file  *  * Definition moved here so it can be used in the assembler file OS_CPU_A.ASM. * See below for the meaning of this define  * * \author George Fankhauser */#include <unistd.h>#include <signal.h>#include <string.h>  ///< memcpy, memset used in os_task.c !#ifndef OS_CPU_A	/* skip the rest if we're including from the assembler file */#ifdef  OS_CPU_GLOBALS#define OS_CPU_EXT#else#define OS_CPU_EXT  extern#endif/** DATA TYPES (Compiler and architecture specific)         */typedef unsigned char  		BOOLEAN;typedef unsigned char  		INT8U;      /* Unsigned  8 bit quantity          */typedef signed   char  		INT8S;      /* Signed    8 bit quantity          */typedef unsigned short int   	INT16U;     /* Unsigned 16 bit quantity          */typedef signed   short int   	INT16S;     /* Signed   16 bit quantity          */typedef unsigned int  		INT32U;     /* Unsigned 32 bit quantity          */typedef signed   int  		INT32S;     /* Signed   32 bit quantity          */typedef float          		FP32;       /* Single precision floating point   */typedef INT32U  		OS_STK;     /* Each stack entry is 32 bit wide   */typedef sigset_t		OS_CPU_SR;  ///< the 'status register' corresponds to signals/** used in os_cpu_c */void OSTaskSwHook (void);/** linuxInit does the setup of the signal handler. */void linuxInit(void); /** linuxInitInt starts periodic interrupts. */void linuxInitInt(void);/** Macro to block interrupts (on Linux: signals) * * Critical method 1 which does not restore the signal state may lead to hanging * timer interrupts, especially when debugging (i.e. real time is much faster than debug * time). */#define OS_CRITICAL_METHOD 3/** We add all the virtual interrupt signals to the mask and save the old process * signal mask to the backup 'status register'. */#define OS_ENTER_CRITICAL() { 	sigset_t set; \				sigemptyset(&set); \				sigaddset(&set, SIGALRM); \				sigaddset(&set, SIGIO); \				sigprocmask(SIG_SETMASK, &set, &cpu_sr); \				}/** Macro to unblock interrupts * * Here we just restore the state that was returned by previous call to sigprocmask */#define OS_EXIT_CRITICAL() {	sigprocmask(SIG_SETMASK, &cpu_sr, NULL); \				} /**  * Stack grows from HIGH to LOW memory on linux x86 */#define  OS_STK_GROWTH      1/** * This macro posts a Linux signal to ourselves; it is returned in the handler with the * threads context. The SIGUSR1 handler saves the context and then calls OSCtxSw(). * * (use OSCtxSw() directly when no sw int available) */#define OS_TASK_SW() { kill(getpid(), SIGUSR1); } #endif //OS_CPU_A

⌨️ 快捷键说明

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