Nase skupina to jsou: Jiri Horacek , Alan Kornuta a David Stupnanek
Nase ukoly
Postovni schranka ZDE
Verejne Rozhrani pro SYSTEM TASK:
Zpravy typu m1:
m_type | PROC1 | PROC2 | PID | MEM_PTR |
SYS_FORK | parent | child | pid | |
SYS_NEWMAP | proc_nr | map_ptr | ||
SYS_EXEC | proc_nr | new_sp | ||
SYS_XIT | parent | proc_nr | ||
SYS_GETSP | proc_nr | |||
SYS_TIMES | proc_nr | buf_ptr | ||
SYS_ABORT |
Zpravy typu m6:
m_type | PROC_NR | SIG_NR | HANDLER |
SYS_SIG | proc_nr | sig_nr | handler |
Zpravy typu m5:
m_type | SRC_SEG | SRC_PROC | SRC_VIR | DST_SEG | DST_PROC | DST_VIR | BYTE_CNT |
SYS_COPY | src_seg | src_proc | src_vir | dst_seg | dst_proc | dst_vir| | byte_cnt |
Pouzivane makra a promenne:
#define SYSTASK_PROC_NR /* !!!!!!!!!!!!!! dodefinovat
!!!!!!!!!!!!!!!!! */
#define PROC1 m_u.m_m1.m1i1
#define PROC2 m_u.m_m1.m1i2
#define PID m_u.m_m1.m1i3
#define MEM_PTR m_u.m_m1.m1p3
#define PROC_NR m_u.m_m6.m6i1
#define SIG_NR m_u.m_m6.m6i2
#define HANDLER m_u.m_m6.m6f1
#define SRC_SEG m_u.m_m5.m5c1
#define SRC_PROC m_u.m_m5.m5i1
#define SRC_VIR m_u.m_m5.m5l1
#define DST_SEG m_u.m_m5.m5c2
#define DST_PROC m_u.m_m5.m5i2
#define DST_VIR m_u.m_m5.m5l2
#define BYTE_CNT m_u.m_m5.m5l3
#define RET_ERROR_CODE m_u.m_m1.m1i2 /* v m.RET_ERROR_CODE je
ulozen navratovy kod funkce */
#define RET_PROC_NR m_u.m_m1.m1i1 /* cislo procesu, ktery posilal
zpravu */
#define RET_SP m_u.m_m1.m1i3; /* hodnota SP vracena z funkce
GET_SP */
#define RET_USER_TIME m_u.m_m1.m1l1 /* hodnota USER_TIME vracena
z funkce SYS_TIMES */
#define RET_SYS_TIME m_u.m_m1.mil2 /* hodnota SYS_TIME vracena z
funkce SYS_TIMES */
#define RET_REG AX /* registr pro ulozeni navratove hodnoty z
volani FORK */
#define MIN_USER_PID /* !!!!!!!!!!!!!!!!!!!! dodefinovat
!!!!!!!!!!!!!!!!!*/
#define MAX_PROC_PID /* !!!!!!!!!!!!!!!!!!!! dodefinovat
!!!!!!!!!!!!!!!!!*/
PUBLIC int sig_procs = 0;
Funkce
PUBLIC void sys_task(void);
PUBLIC void inform();
PUBLIC phys_bytes umap(int proc_nr, int seg, vir_bytes vir_addr, vir_bytes bytes);
Verejne Rozhrani pro CLOCK TASK:
Zpravy typu m6
m_type | CLOCK_PROC | FUNC | NEW_TIME |
CLOCK_TICK | |||
GET_TIME | |||
SET_TIME | newtime | ||
SET_ALARM | proc_nr | func_ptr | delta |
Pouzivane makra a promenne
#define CLOCKTASK_PROC_NR /* !!!!!!!!!!!!!!! dodefinovat
!!!!!!!!!!!!!!!!! */
#define CLOCK_PROC m_u.m_m6.m6i1 /* parametry jednotlivych funkci
jsou */
#define FUNC m_u.m_m6.m6f1 /* ulozeny ve zprave typu m6; tabulka
vyse */
#define NEW_TIME m_u.m_m6.m6l1 /* udava argumenty funkci */
#define RET_ERROR_CODE m_u.m_m1.m1i2 /* chybovy kod vraceny z
funkci */
#define RET_PROC_NR m_u.m_m1.m1i1 /* cislo procesu, ktery vraci
zpravu */
#define RET_REAL_TIME m_u.m_m1.m1l1 /* navratova hodnota z funkce
GET_TIME */
PUBLIC real_time realtime; /* ticks since boot */
PUBLIC real_time boot_time; /* time in seconds of system boot */
#define MILLISEC 100 /* how often to call the scheduler (msec) */
#define SCHED_RATE (MILLISEC*HZ/1000) /* number of ticks per
schedule */
PRIVATE real_time next_alarm; /* time of next alarm */
PRIVATE int sched_ticks = SCHED_RATE; /* counter: when 0, call
scheduler */.
PRIVATE int (*watch_dog[NR_TASKS+1])() /* watch dog functions to
call */;
PUBLIC int lost_ticks; /* ticks seen by low level only */
Funkce
PUBLIC void clock_task();
PUBLIC void clock_stop();