📄 device.h
字号:
/* * TOPPERS/JSP Kernel * Toyohashi Open Platform for Embedded Real-Time Systems/ * Just Standard Profile Kernel * * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory * Toyohashi Univ. of Technology, JAPAN * * 惧淡螟侯涪荚は·笆布の (1)×(4) の掘凤か·Free Software Foundation * によって给山されている GNU General Public License の Version 2 に淡 * 揭されている掘凤を塔たす眷圭に嘎り·塑ソフトウェア∈塑ソフトウェア * を猖恃したものを崔むˉ笆布票じ∷を蝗脱ˇ剩澜ˇ猖恃ˇ浩芹邵∈笆布· * 网脱と钙ぶ∷することを痰浸で钓满するˉ * (1) 塑ソフトウェアをソ〖スコ〖ドの妨で网脱する眷圭には·惧淡の螟侯 * 涪山绩·この网脱掘凤および布淡の痰瘦沮惮年が·そのままの妨でソ〖 * スコ〖ド面に崔まれていることˉ * (2) 塑ソフトウェアを·ライブラリ妨及など·戮のソフトウェア倡券に蝗 * 脱できる妨で浩芹邵する眷圭には·浩芹邵に燃うドキュメント∈网脱 * 荚マニュアルなど∷に·惧淡の螟侯涪山绩·この网脱掘凤および布淡 * の痰瘦沮惮年を非很することˉ * (3) 塑ソフトウェアを·怠达に寥み哈むなど·戮のソフトウェア倡券に蝗 * 脱できない妨で浩芹邵する眷圭には·肌のいずれかの掘凤を塔たすこ * とˉ * (a) 浩芹邵に燃うドキュメント∈网脱荚マニュアルなど∷に·惧淡の螟 * 侯涪山绩·この网脱掘凤および布淡の痰瘦沮惮年を非很することˉ * (b) 浩芹邵の妨轮を·侍に年める数恕によって·TOPPERSプロジェクトに * 鼠桂することˉ * (4) 塑ソフトウェアの网脱により木儡弄または粗儡弄に栏じるいかなる禄 * 巢からも·惧淡螟侯涪荚およびTOPPERSプロジェクトを倘勒することˉ * * 塑ソフトウェアは·痰瘦沮で捏丁されているものであるˉ惧淡螟侯涪荚お * よびTOPPERSプロジェクトは·塑ソフトウェアに簇して·その努脱材墙拉も * 崔めて·いかなる瘦沮も乖わないˉまた·塑ソフトウェアの网脱により木 * 儡弄または粗儡弄に栏じたいかなる禄巢に簇しても·その勒扦を砷わないˉ * * @(#) $Id: device.h,v 1.9 2003/12/15 07:19:22 takayuki Exp $ */#ifndef __DEVICE_H#define __DEVICE_H#include <cpu_rename.h>#include <s_services.h>#ifdef DEVICE_ENABLE#define MAX_MSGSIZE 256#define DEVICE_TIMEOUT INFINITE#define OnDeviceextern struct tagDeviceGlobalVariables{ CRITICAL_SECTION cs; HANDLE ManagerSlot; HANDLE ListenerThread; HANDLE Blocker; HANDLE ThreadBlocker; HANDLE ReplySlot; DWORD ListenerThreadID;} DeviceVars;void InitializeDeviceSupportModule(void);void FinalizeDeviceSupportModule(void);int DeviceRead(unsigned long address, unsigned long size, void * storage);int DeviceWrite(unsigned long address, unsigned long size, void * storage);#define SIL_ENDIAN SIL_ENDIAN_LITTLE/* * エンディアンの瓤啪 */#ifndef SIL_REV_ENDIAN_H#define SIL_REV_ENDIAN_H(data) \ ((VH)((((UH)(data) & 0xff) << 8) | (((UH)(data) >> 8) & 0xff)))#endif /* SIL_REV_ENDIAN_H */#ifndef SIL_REV_ENDIAN_W#define SIL_REV_ENDIAN_W(data) \ ((VW)((((UW)(data) & 0xff) << 24) | (((UW)(data) & 0xff00) << 8) \ | (((UW)(data)>> 8) & 0xff00) | (((UW)(data) >> 24) & 0xff)))#endif /* SIL_REV_ENDIAN_H *//* * 极脸なエンディアンでの粕叫し */Inline VBsil_reb_mem(VP mem){ VB data; DeviceRead((unsigned long)mem, sizeof(data), &data); return data;}Inline VHsil_reh_mem(VP mem){ VH data; DeviceRead((unsigned long)mem, sizeof(data), &data); return data;}Inline VWsil_rew_mem(VP mem){ VW data; DeviceRead((unsigned long)mem, sizeof(data), &data); return data;}Inline voidsil_rek_mem(VP mem, VP data, UINT len){ DeviceRead((unsigned long)mem, len, data); }/* * リトルエンディアンでの粕叫し∈リトルエンディアンプロセッサ∷ */#define sil_reh_lem(mem) sil_reh_mem(mem)#define sil_rew_lem(mem) sil_rew_mem(mem)/* * ビッグエンディアンでの粕叫し∈リトルエンディアンプロセッサ∷ */Inline VHsil_reh_bem(VP mem){ return SIL_REV_ENDIAN_H(sil_reh_mem(mem)); }Inline VWsil_rew_bem(VP mem){ return SIL_REV_ENDIAN_W(sil_rew_mem(mem)); }/* * 极脸なエンディアンでの今哈み */Inline voidsil_wrb_mem(VP mem, VB data){ DeviceWrite((unsigned long)mem, sizeof(data), &data); }Inline voidsil_wrh_mem(VP mem, VH data){ DeviceWrite((unsigned long)mem, sizeof(data), &data); }Inline voidsil_wrw_mem(VP mem, VW data){ DeviceWrite((unsigned long)mem, sizeof(data), &data); }Inline voidsil_wrk_mem(VP mem, VP data, UINT len){ DeviceWrite((unsigned long)mem, len, data); }#define sil_wrh_lem(mem, data) sil_wrh_mem(mem, data)#define sil_wrw_lem(mem, data) sil_wrw_mem(mem, data)/* * ビッグエンディアンでの今哈み∈リトルエンディアンプロセッサ∷ */Inline voidsil_wrh_bem(VP mem, VH data){ data = SIL_REV_ENDIAN_H(data); DeviceWrite((unsigned long)mem, sizeof(data), &data); }Inline voidsil_wrw_bem(VP mem, VW data){ data = SIL_REV_ENDIAN_W(data); DeviceWrite((unsigned long)mem, sizeof(data), &data); }#else // DEVICE_ENABLE//デバイスは网脱しない#define OnDevice /##/#define InitializeDeviceSupportModule /##/#define FinalizeDeviceSupportModule /##//*#define DeviceRead(address, size, storage) \ memcpy(storage, (void *)address, size)#define DeviceWrite(address, size, storage) \ memcpy((void *)address, storage, size)*/#define DeviceRead /##/#define DeviceWrite /##/#endif#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -