00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #include<linux/unistd.h>
00012 #include<linux/linkage.h>
00013 #include<linux/sched.h>
00014 #include<starlet.h>
00015 #include<ssdef.h>
00016 #include<evtdef.h>
00017 #include<pridef.h>
00018 #include <exe_routines.h>
00019 #include <sch_routines.h>
00020
00021
00022
00023 asmlinkage int exe_setpri_wrap(struct struct_setpri *s) {
00024 return exe_setpri(s->pidadr,s->prcnam,s->pri,s->prvpri,s->pol,s->prvpol);
00025 }
00026
00027
00028
00029
00030
00031 asmlinkage int exe_setpri(unsigned int *pidadr, void *prcnam, unsigned int pri, unsigned int *prvpri, unsigned int*pol, unsigned int *prvpol) {
00032 struct _pcb *p;
00033 struct _pcb * retpcb;
00034 unsigned long ipid, epid;
00035 int sts;
00036
00037 sts=exe_nampid(current,pidadr,prcnam,&retpcb,&ipid,&epid);
00038 p=retpcb;
00039
00040
00041
00042 if (!p) p=current;
00043
00044
00045
00046 p->pcb_b_prib=31-pri;
00047
00048
00049 if (p==current)
00050 sch_change_cur_priority(p, p->pcb$b_prib);
00051
00052
00053 sch_rse(p,PRI$_IOCOM,EVT$_SETPRI);
00054
00055 return SS__NORMAL;
00056 }
00057