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();