Changes from tags/minix3.1.2a-orig at r26 to tags/syscall-add-simple-foo at r26
- Location:
- tags
- Files:
-
- 2 deleted
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
tags/syscall-add-simple-foo/minix/include/minix/callnr.h
r26 r26 1 #define NCALLS 9 5/* number of system calls allowed */1 #define NCALLS 96 /* number of system calls allowed */ 2 2 3 3 #define EXIT 1 … … 87 87 #define TRUNCATE 93 /* to FS */ 88 88 #define FTRUNCATE 94 /* to FS */ 89 #define FOO 95 /* to PM */ -
tags/syscall-add-simple-foo/minix/include/minix/com.h
r26 r26 35 35 36 36 /* User-space processes, that is, device drivers, servers, and INIT. */ 37 /* ATTENZIONE: deve corrispondere all'ordine nella boot image */38 37 #define PM_PROC_NR 0 /* process manager */ 39 38 #define FS_PROC_NR 1 /* file system */ 40 39 #define RS_PROC_NR 2 /* reincarnation server */ 41 #define TTY_PROC_NR 3 /* terminal (TTY) driver */ 42 #define DS_PROC_NR 4 /* data store server */ 43 #define SS_PROC_NR 5 /* semaforo */ 44 #define MEM_PROC_NR 6 /* memory driver (RAM disk, null, etc.) */ 45 #define LOG_PROC_NR 7 /* log device driver */ 46 #define INIT_PROC_NR 8 /* init -- goes multiuser */ 40 #define MEM_PROC_NR 3 /* memory driver (RAM disk, null, etc.) */ 41 #define LOG_PROC_NR 4 /* log device driver */ 42 #define TTY_PROC_NR 5 /* terminal (TTY) driver */ 43 #define DS_PROC_NR 6 /* data store server */ 44 #define INIT_PROC_NR 7 /* init -- goes multiuser */ 47 45 48 46 /* Number of processes contained in the system image. */ … … 488 486 # define DS_VAL_L2 m2_l2 /* second long data value */ 489 487 490 #define SS_RQ_BASE 0xA00491 492 #define SS_DOWN (SS_RQ_BASE + 0) /* publish information */493 #define SS_UP (SS_RQ_BASE + 1) /* retrieve information */494 488 /*===========================================================================* 495 489 * Miscellaneous messages used by TTY * -
tags/syscall-add-simple-foo/minix/kernel/table.c
r26 r26 69 69 #define SRV_M (~0) 70 70 #define SYS_M (~0) 71 #define USR_M (s(PM_PROC_NR) | s(FS_PROC_NR) | s(RS_PROC_NR) | s(S S_PROC_NR) | s(SYSTEM))71 #define USR_M (s(PM_PROC_NR) | s(FS_PROC_NR) | s(RS_PROC_NR) | s(SYSTEM)) 72 72 #define DRV_M (USR_M | s(SYSTEM) | s(CLOCK) | s(DS_PROC_NR) | s(LOG_PROC_NR) | s(TTY_PROC_NR)) 73 73 … … 80 80 #define RS_C ~0 81 81 #define DS_C ~0 82 #define SS_C ~083 82 #define PM_C ~(c(SYS_DEVIO) | c(SYS_SDEVIO) | c(SYS_VDEVIO) | c(SYS_IRQCTL) | c(SYS_INT86)) 84 83 #define FS_C (c(SYS_KILL) | c(SYS_VIRCOPY) | c(SYS_VIRVCOPY) | c(SYS_UMAP) | c(SYS_GETINFO) | c(SYS_EXIT) | c(SYS_TIMES) | c(SYS_SETALARM)) … … 98 97 * Note: the quantum size must be positive in all cases! 99 98 */ 100 /* Attenzione! Minix bug! L'ordine nella bootimage deve coincidere con quello101 * della tabella (vedi commento precedente). Ne deriva che tre file devono102 * essere coerenti:103 * 1. include/minix/com.h (l'ordine delle macro *_NR)104 * 2. kernel/table.c (l'ordine in boot_image)105 * 3. tools/Makefile (l'ordine di concatenamento nella boot image)106 * altrimenti la ipc_to mask non corrisponde107 */108 99 PUBLIC struct boot_image image[] = { 109 100 /* process nr, pc, flags, qs, queue, stack, traps, ipcto, call, name */ … … 115 106 { FS_PROC_NR, 0, SRV_F, 32, 4, 0, SRV_T, SRV_M, FS_C, "fs" }, 116 107 { RS_PROC_NR, 0, SRV_F, 4, 3, 0, SRV_T, SYS_M, RS_C, "rs" }, 108 { DS_PROC_NR, 0, SRV_F, 4, 3, 0, SRV_T, SYS_M, DS_C, "ds" }, 117 109 { TTY_PROC_NR, 0, SRV_F, 4, 1, 0, SRV_T, SYS_M, TTY_C, "tty" }, 118 { DS_PROC_NR, 0, SRV_F, 4, 3, 0, SRV_T, SYS_M, DS_C, "ds" },119 { SS_PROC_NR, 0, SRV_F, 4, 3, 0, SRV_T, SYS_M, SS_C, "ss" },120 110 { MEM_PROC_NR, 0, SRV_F, 4, 2, 0, SRV_T, SYS_M, MEM_C, "mem" }, 121 111 { LOG_PROC_NR, 0, SRV_F, 4, 2, 0, SRV_T, SYS_M, DRV_C, "log" }, -
tags/syscall-add-simple-foo/minix/servers/Makefile
r26 r26 20 20 cd ./rs && $(MAKE) $@ 21 21 cd ./ds && $(MAKE) $@ 22 cd ./ss && $(MAKE) $@23 22 cd ./is && $(MAKE) $@ 24 23 cd ./init && $(MAKE) $@ … … 30 29 cd ./rs && $(MAKE) EXTRA_OPTS=$(EXTRA_OPTS) build 31 30 cd ./ds && $(MAKE) EXTRA_OPTS=$(EXTRA_OPTS) build 32 cd ./ss && $(MAKE) EXTRA_OPTS=$(EXTRA_OPTS) build33 31 cd ./init && $(MAKE) EXTRA_OPTS=$(EXTRA_OPTS) build 34 32 -
tags/syscall-add-simple-foo/minix/servers/fs/table.c
r26 r26 113 113 do_truncate, /* 93 = truncate */ 114 114 do_ftruncate, /* 94 = truncate */ 115 no_sys, /* 95 = foo */ 115 116 }; 116 117 /* This should not fail with "array size is negative": */ -
tags/syscall-add-simple-foo/minix/servers/pm/alloc.c
r26 r26 68 68 * needed for FORK or EXEC. Swap other processes out if needed. 69 69 */ 70 register struct hole *hp, *prev_ptr, *best, *prev_best; 71 int delta=-1; 70 register struct hole *hp, *prev_ptr; 72 71 phys_clicks old_base; 72 73 73 do { 74 74 prev_ptr = NIL_HOLE; 75 hp = hole_head; 76 while (hp != NIL_HOLE && hp->h_base < swap_base) { 77 printf("base:%d len:%d (req:%d)\n", hp->h_base, hp->h_len, clicks); 78 if (hp->h_len == clicks) { 79 /* We found a hole that is big enough. Use it. */ 80 old_base = hp->h_base; /* remember where it started */ 81 hp->h_base += clicks; /* bite a piece off */ 82 hp->h_len -= clicks; /* ditto */ 83 /* Remember new high watermark of used memory. */ 84 if(hp->h_base > high_watermark) 85 high_watermark = hp->h_base; 86 /* Delete the hole if used up completely. */ 87 if (hp->h_len == 0) del_slot(prev_ptr, hp); 88 /* Return the start address of the acquired block. */ 89 printf("Allocazione 'perfetta'\n"); 90 return(old_base); 91 if (hp->h_len > clicks) { 92 if (hp->h_len - clicks < delta || delta == -1){ 93 delta = hp->h_len - clicks; 94 best = hp; 95 prev_best = prev_ptr; 96 } 97 prev_ptr = hp; 98 hp = hp->h_next; 99 if (delta > -1){ 100 printf("Allocazione con delta=%d\n",delta); 101 old_base = best->h_base; /* remember where it started */ 102 best->h_base += clicks; /* bite a piece off */ 103 best->h_len -= clicks; /* cioe` delta */ 104 /* Remember new high watermark of used memory. */ 105 if(best->h_base > high_watermark) 106 high_watermark = best->h_base; 107 /* Delete the hole if used up completely. */ 108 if (best->h_len == 0) printf("Non dovrebbe mai succedere\n"); 109 /* Return the start address of the acquired block. */ 110 return(old_base); 111 } while (swap_out()); /* try to swap some other process out */ 75 hp = hole_head; 76 while (hp != NIL_HOLE && hp->h_base < swap_base) { 77 if (hp->h_len >= clicks) { 78 /* We found a hole that is big enough. Use it. */ 79 old_base = hp->h_base; /* remember where it started */ 80 hp->h_base += clicks; /* bite a piece off */ 81 hp->h_len -= clicks; /* ditto */ 82 83 /* Remember new high watermark of used memory. */ 84 if(hp->h_base > high_watermark) 85 high_watermark = hp->h_base; 86 87 /* Delete the hole if used up completely. */ 88 if (hp->h_len == 0) del_slot(prev_ptr, hp); 89 90 /* Return the start address of the acquired block. */ 91 return(old_base); 92 } 93 94 prev_ptr = hp; 95 hp = hp->h_next; 96 } 97 } while (swap_out()); /* try to swap some other process out */ 112 98 return(NO_MEM); 113 99 } -
tags/syscall-add-simple-foo/minix/servers/pm/misc.c
r26 r26 428 428 } 429 429 430 PUBLIC int do_foo() 431 { 432 printf("Foo syscall called!\n"); 433 return OK; 434 } -
tags/syscall-add-simple-foo/minix/servers/pm/proto.h
r26 r26 57 57 58 58 /* misc.c */ 59 _PROTOTYPE( int do_foo, (void) ); 59 60 _PROTOTYPE( int do_reboot, (void) ); 60 61 _PROTOTYPE( int do_procstat, (void) ); -
tags/syscall-add-simple-foo/minix/servers/pm/table.c
r26 r26 111 111 no_sys, /* 93 = truncate */ 112 112 no_sys, /* 94 = ftruncate */ 113 do_foo, /* 95 = foo */ 113 114 }; 114 115 /* This should not fail with "array size is negative": */ -
tags/syscall-add-simple-foo/minix/tools/Makefile
r26 r26 11 11 ../servers/fs/fs \ 12 12 ../servers/rs/rs \ 13 ../servers/ds/ds \ 13 14 ../drivers/tty/tty \ 14 ../servers/ds/ds \15 ../servers/ss/ss \16 15 ../drivers/memory/memory \ 17 16 ../drivers/log/log \
Note:
See TracChangeset
for help on using the changeset viewer.