linux下的sched头文件.docx

上传人:b****2 文档编号:936826 上传时间:2022-10-14 格式:DOCX 页数:30 大小:30.87KB
下载 相关 举报
linux下的sched头文件.docx_第1页
第1页 / 共30页
linux下的sched头文件.docx_第2页
第2页 / 共30页
linux下的sched头文件.docx_第3页
第3页 / 共30页
linux下的sched头文件.docx_第4页
第4页 / 共30页
linux下的sched头文件.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

linux下的sched头文件.docx

《linux下的sched头文件.docx》由会员分享,可在线阅读,更多相关《linux下的sched头文件.docx(30页珍藏版)》请在冰豆网上搜索。

linux下的sched头文件.docx

linux下的sched头文件

/*

*include/linux/schedh

*

*/

#ifndef_LINUX_SCHED_H

#define_LINUX_SCHED_H

#include/*forHZ*/

externunsignedlongevent;

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

structexec_domain;

/*

*cloningflags:

*/

#defineCSIGNAL0x000000ff/*signalmasktobesentatexit*/

#defineCLONE_VM0x00000100/*setifVMsharedbetweenprocesses*/

#defineCLONE_FS0x00000200/*setiffsinfosharedbetweenprocesses*/

#defineCLONE_FILES0x00000400/*setifopenfilessharedbetweenprocesses*/

#defineCLONE_SIGHAND0x00000800/*setifsignalhandlersandblockedsignalsshared*/

#defineCLONE_PID0x00001000/*setifpidshared*/

#defineCLONE_PTRACE0x00002000/*setifwewanttolettracingcontinueonthechildtoo*/

#defineCLONE_VFORK0x00004000/*setiftheparentwantsthechildtowakeituponmm_release*/

#defineCLONE_PARENT0x00008000/*setifwewanttohavethesameparentasthecloner*/

#defineCLONE_THREAD0x00010000/*Samethreadgroup?

*/

#defineCLONE_NEWNS0x00020000/*Newnamespacegroup?

*/

#defineCLONE_SIGNAL(CLONE_SIGHAND|CLONE_THREAD)

/*

*Thesearetheconstantusedtofakethefixed-pointload-average

*counting.Somenotes:

*-11bitfractionsexpandto22bitsbythemultiplies:

thisgives

*aload-averageprecisionof10bitsinteger+11bitsfractional

*-ifyouwanttocountload-averagesmoreoften,youneedmore

*precision,orroundingwillgetyou.With2-secondcountingfreq,

*theEXP_nvalueswouldbe1981,2034and2043ifstillusingonly

*11bitfractions.

*/

externunsignedlongavenrun[];/*Loadaverages*/

#defineFSHIFT11/*nrofbitsofprecision*/

#defineFIXED_1(1<

#defineLOAD_FREQ(5*HZ)/*5secintervals*/

#defineEXP_11884/*1/exp(5sec/1min)asfixed-point*/

#defineEXP_52014/*1/exp(5sec/5min)*/

#defineEXP_152037/*1/exp(5sec/15min)*/

#defineCALC_LOAD(load,exp,n)\

load*=exp;\

load+=n*(FIXED_1-exp);\

load>>=FSHIFT;

#defineCT_TO_SECS(x)((x)/HZ)

#defineCT_TO_USECS(x)(((x)%HZ)*1000000/HZ)

externintnr_threads;

externintlast_pid;

externunsignedlongnr_running(void);

externunsignedlongnr_uninterruptible(void);

#include

#include

#include

#include

#include

#include

//进程状态

#defineTASK_RUNNING0

#defineTASK_INTERRUPTIBLE1

#defineTASK_UNINTERRUPTIBLE2

#defineTASK_ZOMBIE4

#defineTASK_STOPPED8

#define__set_task_state(tsk,state_value)\

do{(tsk)->state=(state_value);}while(0)

#ifdefCONFIG_SMP

#defineset_task_state(tsk,state_value)\

set_mb((tsk)->state,(state_value))

#else

#defineset_task_state(tsk,state_value)\

__set_task_state((tsk),(state_value))

#endif

#define__set_current_state(state_value)\

do{current->state=(state_value);}while(0)

#ifdefCONFIG_SMP

#defineset_current_state(state_value)\

set_mb(current->state,(state_value))

#else

#defineset_current_state(state_value)\

__set_current_state(state_value)

#endif

/*

*Schedulingpolicies

*/

#defineSCHED_OTHER0

#defineSCHED_FIFO1

#defineSCHED_RR2

structsched_param{

intsched_priority;

};

structcompletion;

#ifdef__KERNEL__

#include

/*

*Thisserializes"schedule()"andalsoprotects

*therun-queuefromdeletions/modifications(but

*_adding_tothebeginningoftherun-queuehas

*aseparatelock).

*/

externrwlock_ttasklist_lock;

externspinlock_tmmlist_lock;

typedefstructtask_structtask_t;//将task_t定义为task_sturct的结构类型

externvoidsched_init(void);

externvoidinit_idle(task_t*idle,intcpu);

externvoidshow_state(void);

externvoidshow_stack(unsignedlong*esp);

externvoidcpu_init(void);

externvoidtrap_init(void);

externvoidupdate_process_times(intuser);

externvoidupdate_one_process(task_t*p,unsignedlonguser,

unsignedlongsystem,intcpu);

externvoidscheduler_tick(intuser_tick,intsystem);

externvoidmigration_init(void);

externunsignedlongcache_decay_ticks;

externintset_user(uid_tnew_ruid,intdumpclear);

#defineMAX_SCHEDULE_TIMEOUTLONG_MAX

externsignedlongFASTCALL(schedule_timeout(signedlongtimeout));

asmlinkagevoidschedule(void);

externintschedule_task(structtq_struct*task);

externvoidflush_scheduled_tasks(void);

externi

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1