亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? cpu_context.h

?? Simple Operating Systems (簡稱SOS)是一個可以運行在X86平臺上(包括QEMU
?? H
字號:
/* Copyright (C) 2005  David Decotigny   Copyright (C) 2000-2004, The KOS team   This program is free software; you can redistribute it and/or   modify it under the terms of the GNU General Public License   as published by the Free Software Foundation; either version 2   of the License, or (at your option) any later version.      This program is distributed in the hope that it will be useful,   but WITHOUT ANY WARRANTY; without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the   GNU General Public License for more details.      You should have received a copy of the GNU General Public License   along with this program; if not, write to the Free Software   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,   USA. */#ifndef _SOS_CPUCTXT_H_#define _SOS_CPUCTXT_H_/** * @file cpu_context.h * * Low level API to manage kernel and user thread CPU contexts. Should * be some kind of architecture-independent. */#include <sos/types.h>#include <sos/errno.h>/** * Opaque structure storing the CPU context of an inactive kernel or * user thread, as saved by the low level primitives below or by the * interrupt/exception handlers. * * @note This is an (architecture-independent) forward declaration: * see cpu_context.c and the *.S files for its * (architecture-dependent) definition. */struct sos_cpu_state;/** * The type of the functions passed as arguments to the Kernel thread * related functions. */typedef void (sos_cpu_kstate_function_arg1_t(sos_ui32_t arg1));/** * Function to create an initial context for a kernel thread starting * its execution at function start_func with the argument initial_arg, * and having the stack defined by stack_bottom/stack_size. When the * start_func function returns, the function exit_func is called with * argument exit_arg. * * @param kctxt The kernel thread CPU context to initialize. The * address of the newly-initialized struct sos_cpu_state will be * stored in this variable. The contents of this struct sos_cpu_state * are actually located /inside/ the stack. * * @param start_func The address of the first instruction that will be * executed when this context will be first transferred on * CPU. Practically speaking, this is the address of a function that * is assumed to take 1 argument. * * @param start_arg The value that will be passed as the argument to * start_func when the thread starts. The stack will be setup * accordingly to simulate a real call to the function and really * passing this arguement. * * @param stack_bottom The lowest address of the stack. * * @param stack_size The size of the stack. * * @param exit_func The address of the instruction executed after the * function start_func has returned. This function takes 1 parameter * as argument: exit_arg. * * @param exit_arg The argument passed to the function exit_func. * * @note the newly created context is INTERRUPTIBLE by default ! */sos_ret_t sos_cpu_kstate_init(struct sos_cpu_state **kctxt,			      sos_cpu_kstate_function_arg1_t *start_func,			      sos_ui32_t  start_arg,			      sos_vaddr_t stack_bottom,			      sos_size_t  stack_size,			      sos_cpu_kstate_function_arg1_t *exit_func,			      sos_ui32_t  exit_arg);/** * Function that performs an immediate context-switch from one * kernel/user thread to another one. It stores the current executing * context in from_ctxt, and restores to_context on CPU. * * @param from_ctxt The address of the struct sos_cpu_state will be * stored in this variable. Must NOT be NULL. * * @param to_ctxt The CPU will resume its execution with the struct * sos_cpu_state located at this address. Must NOT be NULL. */void sos_cpu_context_switch(struct sos_cpu_state **from_ctxt,			    struct sos_cpu_state *to_ctxt);/* * Switch to the new given context (of a kernel/user thread) without * saving the old context (of another kernel/user thread), and call * the function reclaiming_func passing it the recalining_arg * argument. The reclaining function is called from within the stack * of the new context, so that it can (among other things) safely * destroy the stack of the former context. * * @param switch_to_ctxt The context that will be restored on the CPU * * @param reclaiming_func The address of the function that will be * called after having changed the stack, but before restoring the CPU * context to switch_to_ctxt. */voidsos_cpu_context_exit_to(struct sos_cpu_state *switch_to_ctxt,			sos_cpu_kstate_function_arg1_t *reclaiming_func,			sos_ui32_t reclaiming_arg) __attribute__((noreturn));/* ======================================================================= * Public Accessor functions *//** * Return Program Counter stored in the saved kernel/user context */sos_vaddr_t sos_cpu_context_get_PC(const struct sos_cpu_state *ctxt);/** * Return Stack Pointer stored in the saved kernel/user context */sos_vaddr_t sos_cpu_context_get_SP(const struct sos_cpu_state *ctxt);/** * Dump the contents of the CPU context (bochs + x86_videomem) */void sos_cpu_context_dump(const struct sos_cpu_state *ctxt);/* ======================================================================= * Public Accessor functions TO BE USED ONLY BY Exception handlers *//** * Return the argument passed by the CPU upon exception, as stored in the * saved context */sos_ui32_t sos_cpu_context_get_EX_info(const struct sos_cpu_state *ctxt);/** * Return the faulting address of the exception */sos_vaddr_tsos_cpu_context_get_EX_faulting_vaddr(const struct sos_cpu_state *ctxt);/* ======================================================================= * Macros controlling stack poisoning. * Stack poisoning can be used to detect: *  - unitialized local variables *  - when the thread might have gone too deep in the stack *//** The signature of the poison */#define SOS_CPU_STATE_STACK_POISON 0xa5/** * When set, mean that the whole stack is poisoned to detect use of * unititialized variables */#define SOS_CPU_STATE_DETECT_UNINIT_KERNEL_VARS/* #undef SOS_CPU_STATE_DETECT_UNINIT_KERNEL_VARS *//** * When set, mean that the bottom of the stack is poisoned to detect * probable stack overflow. Its value indicates the number of bytes * used for this detection. */#define SOS_CPU_STATE_DETECT_KERNEL_STACK_OVERFLOW  64/* #undef SOS_CPU_STATE_DETECT_KERNEL_STACK_OVERFLOW */#if defined(SOS_CPU_STATE_DETECT_KERNEL_STACK_OVERFLOW)voidsos_cpu_state_prepare_detect_kernel_stack_overflow(const struct sos_cpu_state *ctxt,						   sos_vaddr_t kernel_stack_bottom,						   sos_size_t kernel_stack_size);void sos_cpu_state_detect_kernel_stack_overflow(const struct sos_cpu_state *ctxt,						sos_vaddr_t kernel_stack_bottom,						sos_size_t kernel_stack_size);#else# define sos_cpu_state_prepare_detect_kernel_stack_overflow(ctxt,stkbottom,stksize) \  ({ /* nop */ })# define sos_cpu_state_detect_kernel_stack_overflow(ctxt,stkbottom,stksize) \  ({ /* nop */ })#endif/* ======================================================================= * Backtrace facility. To be used for DEBUGging purpose ONLY. *//** * The function called at each step of the backtrace iterations * * @param PC The address of the next instruction of the function that * will be executed * * @param params The address of the array of the parameteres that have * been passed to the function considered * * @param depth The index of the iteration (ie the depth of the * current frame into the stack) * * @param custom_arg Whatever you want: this is the argument passed as * custom_arg to sos_backtrace() */typedef void (sos_backtrace_callback_t)(sos_vaddr_t PC,					sos_vaddr_t params,					sos_ui32_t depth,					void *custom_arg);/** * Call the backtracer callback on each frame stored in the cpu_state * * @param cpu_state The CPU context we want to explore. MUST be the * context of a thread in Kernel mode, or NULL. When NULL: backtrace * the current CPU context. * * @param max_depth The maximum number of frames to explore * * @param stack_bottom The lower boundary of the stack. This is used * to make sure that the frame addresses fit inside the stack * boudaries (ie are potentially correct). * * @param stack_size The size of the stack. Same comment. * * @param backtracer The function to call to handle the frame for each * iteration * * @param custom_arg The arg passed as custom_arg to the backtracer * * @return The number of frames explored. * * @note Might be inaccurate when gcc's -fomit-frame-pointer has been * used. */sos_ui32_t sos_backtrace(const struct sos_cpu_state *cpu_state,			 sos_ui32_t max_depth,			 sos_vaddr_t stack_bottom,			 sos_size_t stack_size,			 sos_backtrace_callback_t * backtracer,			 void *custom_arg);#endif /* _SOS_CPUCTXT_H_ */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人av电影在线播放| 麻豆精品在线观看| 成人sese在线| 亚洲天堂成人在线观看| 一本久道久久综合中文字幕| 中文字幕制服丝袜成人av| 91麻豆swag| 亚洲不卡在线观看| 欧美一级艳片视频免费观看| 精品午夜一区二区三区在线观看| 亚洲精品一区二区三区福利| 丁香激情综合五月| 一个色综合网站| 日韩一级二级三级| 国产成人免费视频网站| 亚洲欧洲制服丝袜| 日韩欧美一二三四区| 国产成人精品综合在线观看| 亚洲人午夜精品天堂一二香蕉| 在线观看日韩国产| 激情综合一区二区三区| 国产精品美女久久久久av爽李琼| 91久久精品午夜一区二区| 日本系列欧美系列| 欧美精彩视频一区二区三区| 色噜噜狠狠色综合欧洲selulu| 青青青伊人色综合久久| 亚洲成人免费观看| 精品久久人人做人人爰| 不卡在线视频中文字幕| 午夜精品久久久久久久99樱桃| 久久久久久久久久看片| 欧美午夜不卡在线观看免费| 国模少妇一区二区三区| 亚洲自拍与偷拍| 国产欧美一区二区精品性色超碰| 欧美视频在线观看一区| 国产福利一区在线观看| 三级不卡在线观看| 一区在线中文字幕| 2024国产精品| 在线播放一区二区三区| 91丨porny丨最新| 国产精品亚洲专一区二区三区 | 欧美性一区二区| 久久国产人妖系列| 国产精品国产三级国产aⅴ原创 | 国产丝袜欧美中文另类| 在线视频国内一区二区| 韩国一区二区在线观看| 亚洲国产日日夜夜| 日本一区二区成人在线| 制服丝袜日韩国产| 99精品久久只有精品| 久久电影网站中文字幕| 亚洲欧美日韩一区| 欧美日韩精品欧美日韩精品一| av不卡一区二区三区| 成人激情免费电影网址| 亚洲国产另类av| 中文字幕在线一区免费| 精品国产青草久久久久福利| 欧美怡红院视频| av电影在线不卡| 国内外精品视频| 精品一区二区三区免费| 午夜影院久久久| 一区二区在线观看视频| 国产婷婷一区二区| 精品少妇一区二区三区免费观看| 在线观看欧美日本| av在线不卡免费看| 国产传媒日韩欧美成人| 美女视频免费一区| 韩国精品主播一区二区在线观看 | 日本一区二区视频在线观看| 日韩一二三四区| 欧美日韩一区高清| 日本大香伊一区二区三区| 成人听书哪个软件好| 国产一区二区伦理| 蜜桃传媒麻豆第一区在线观看| 亚洲成在线观看| 一区二区三区美女| 亚洲三级在线看| 国产精品伦理在线| 国产精品美女久久福利网站| 欧美肥胖老妇做爰| 色偷偷久久人人79超碰人人澡 | 亚洲欧洲国产专区| 欧美极品少妇xxxxⅹ高跟鞋 | 欧美裸体一区二区三区| 一本大道久久a久久精品综合 | 国产精品小仙女| 国产一区二区三区av电影| 国产综合色精品一区二区三区| 久久疯狂做爰流白浆xx| 激情综合网最新| 久草热8精品视频在线观看| 久久精品国产秦先生| 蜜乳av一区二区| 成av人片一区二区| 91伊人久久大香线蕉| 色哟哟一区二区三区| 色综合久久久久综合99| 日本久久电影网| 欧美性xxxxxxxx| 欧美精品一卡二卡| 日韩精品一区二区三区四区| 精品福利一二区| 久久精品夜色噜噜亚洲aⅴ| 国产婷婷精品av在线| 中文字幕在线免费不卡| 樱花影视一区二区| 日韩不卡一二三区| 美女视频网站久久| 国产成人综合视频| 91美女片黄在线观看91美女| 欧美日韩精品一区二区| 日韩免费看网站| 中文在线免费一区三区高中清不卡| 久久久久久久久久美女| 亚洲伦在线观看| 免费在线观看不卡| 成人综合婷婷国产精品久久 | 日本乱码高清不卡字幕| 欧美一区二区三区免费在线看| 欧美精品一区二区三区视频| 国产精品免费视频观看| 亚洲成人777| 国产精品自拍在线| 日本高清免费不卡视频| 欧美亚洲综合色| 国产精品网曝门| 亚洲电影欧美电影有声小说| 久久国产精品99久久人人澡| 波多野洁衣一区| 欧美一区二区在线视频| 久久奇米777| 亚洲成人在线观看视频| 国产成人免费高清| 在线播放欧美女士性生活| 国产精品女人毛片| 亚洲一区二区三区视频在线播放 | 激情成人综合网| 欧美优质美女网站| 日本一区二区三区免费乱视频| 亚洲成人免费电影| 91在线免费看| 久久日韩粉嫩一区二区三区| 亚洲大尺度视频在线观看| 成人av网址在线观看| 精品久久久久99| 亚洲综合偷拍欧美一区色| 精品中文字幕一区二区小辣椒| 欧美色综合天天久久综合精品| 国产日韩欧美精品一区| 日韩福利电影在线观看| 在线观看视频一区| 国产精品久久久久久久久快鸭 | 中文字幕综合网| 久久精品国产99国产精品| 欧美性一区二区| 亚洲欧美偷拍卡通变态| 成人综合婷婷国产精品久久免费| 欧美一区二区三区免费观看视频| 亚洲精品视频观看| 成人性生交大片免费看中文| 精品不卡在线视频| 成人免费一区二区三区在线观看| av中文字幕亚洲| 国产精品毛片久久久久久久| 国产在线精品一区在线观看麻豆| 欧美精品在线一区二区三区| 亚洲最大成人网4388xx| 色婷婷av一区二区三区软件| 国产精品毛片久久久久久| 国产一区二区91| 日韩精品一区二区三区视频| 视频一区视频二区中文| 欧美日韩精品免费观看视频| 亚洲午夜视频在线观看| 欧美性受xxxx| 亚洲精品自拍动漫在线| 91美女片黄在线观看91美女| 亚洲天堂福利av| 99久久99久久精品免费观看| 久久精品夜夜夜夜久久| 国产99久久久国产精品潘金| 久久九九久精品国产免费直播| 国产老妇另类xxxxx| 国产日韩三级在线| av中文字幕一区| 亚洲精品精品亚洲| 欧美日韩aaa| 天天操天天干天天综合网| 久久综合九色综合欧美就去吻| 国产一区二区三区在线观看免费 | 欧美一级黄色大片| 久久国内精品自在自线400部|