Ignore:
Location:
tags/minix3.1.2a-orig/minix
Files:
6 added
10 edited

Legend:

Unmodified
Added
Removed
  • tags/minix3.1.2a-orig/minix/include/minix/callnr.h

    r26 r26  
    1 #define NCALLS            96    /* number of system calls allowed */
     1#define NCALLS            95    /* number of system calls allowed */
    22
    33#define EXIT               1
     
    8787#define TRUNCATE          93    /* to FS */
    8888#define FTRUNCATE         94    /* to FS */
    89 #define FOO       95    /* to PM */
  • tags/minix3.1.2a-orig/minix/include/minix/com.h

    r26 r26  
    3535
    3636/* User-space processes, that is, device drivers, servers, and INIT. */
     37/* ATTENZIONE: deve corrispondere all'ordine nella boot image */
    3738#define PM_PROC_NR        0     /* process manager */
    3839#define FS_PROC_NR        1     /* file system */
    3940#define RS_PROC_NR        2     /* reincarnation server */
    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 */
     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 */
    4547
    4648/* Number of processes contained in the system image. */
     
    486488#  define DS_VAL_L2             m2_l2           /* second long data value */
    487489
     490#define SS_RQ_BASE              0xA00
     491
     492#define SS_DOWN (SS_RQ_BASE + 0)        /* publish information */
     493#define SS_UP   (SS_RQ_BASE + 1)        /* retrieve information */
    488494/*===========================================================================*
    489495 *                Miscellaneous messages used by TTY                         *
  • tags/minix3.1.2a-orig/minix/kernel/table.c

    r26 r26  
    6969#define SRV_M   (~0)
    7070#define SYS_M   (~0)
    71 #define USR_M (s(PM_PROC_NR) | s(FS_PROC_NR) | s(RS_PROC_NR) | s(SYSTEM))
     71#define USR_M (s(PM_PROC_NR) | s(FS_PROC_NR) | s(RS_PROC_NR) | s(SS_PROC_NR) | s(SYSTEM))
    7272#define DRV_M (USR_M | s(SYSTEM) | s(CLOCK) | s(DS_PROC_NR) | s(LOG_PROC_NR) | s(TTY_PROC_NR))
    7373
     
    8080#define RS_C    ~0     
    8181#define DS_C    ~0     
     82#define SS_C    ~0     
    8283#define PM_C    ~(c(SYS_DEVIO) | c(SYS_SDEVIO) | c(SYS_VDEVIO) | c(SYS_IRQCTL) | c(SYS_INT86))
    8384#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))
     
    9798 * Note: the quantum size must be positive in all cases!
    9899 */
     100/* Attenzione! Minix bug! L'ordine nella bootimage deve coincidere con quello
     101 * della tabella (vedi commento precedente). Ne deriva che tre file devono
     102 * 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 corrisponde
     107 */
    99108PUBLIC struct boot_image image[] = {
    100109/* process nr,   pc, flags, qs,  queue, stack, traps, ipcto, call,  name */
     
    106115 { FS_PROC_NR,    0, SRV_F, 32,      4, 0,     SRV_T, SRV_M,  FS_C, "fs"    },
    107116 { RS_PROC_NR,    0, SRV_F,  4,      3, 0,     SRV_T, SYS_M,  RS_C, "rs"    },
     117 { TTY_PROC_NR,   0, SRV_F,  4,      1, 0,     SRV_T, SYS_M, TTY_C, "tty"   },
    108118 { DS_PROC_NR,    0, SRV_F,  4,      3, 0,     SRV_T, SYS_M,  DS_C, "ds"    },
    109  { TTY_PROC_NR,   0, SRV_F,  4,      1, 0,     SRV_T, SYS_M, TTY_C, "tty"   },
     119 { SS_PROC_NR,    0, SRV_F,  4,      3, 0,     SRV_T, SYS_M,  SS_C, "ss"    },
    110120 { MEM_PROC_NR,   0, SRV_F,  4,      2, 0,     SRV_T, SYS_M, MEM_C, "mem"   },
    111121 { LOG_PROC_NR,   0, SRV_F,  4,      2, 0,     SRV_T, SYS_M, DRV_C, "log"   },
  • tags/minix3.1.2a-orig/minix/servers/Makefile

    r26 r26  
    2020        cd ./rs && $(MAKE) $@
    2121        cd ./ds && $(MAKE) $@
     22        cd ./ss && $(MAKE) $@
    2223        cd ./is && $(MAKE) $@
    2324        cd ./init && $(MAKE) $@
     
    2930        cd ./rs && $(MAKE) EXTRA_OPTS=$(EXTRA_OPTS) build
    3031        cd ./ds && $(MAKE) EXTRA_OPTS=$(EXTRA_OPTS) build
     32        cd ./ss && $(MAKE) EXTRA_OPTS=$(EXTRA_OPTS) build
    3133        cd ./init && $(MAKE) EXTRA_OPTS=$(EXTRA_OPTS) build
    3234
  • tags/minix3.1.2a-orig/minix/servers/fs/table.c

    r26 r26  
    113113        do_truncate,    /* 93 = truncate */
    114114        do_ftruncate,   /* 94 = truncate */
    115         no_sys,         /* 95 = foo */
    116115};
    117116/* This should not fail with "array size is negative": */
  • tags/minix3.1.2a-orig/minix/servers/pm/alloc.c

    r26 r26  
    6868 * needed for FORK or EXEC.  Swap other processes out if needed.
    6969 */
    70   register struct hole *hp, *prev_ptr;
     70  register struct hole *hp, *prev_ptr, *best, *prev_best;
     71  int delta=-1;
    7172  phys_clicks old_base;
    72 
    7373  do {
    7474        prev_ptr = NIL_HOLE;
    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 */
     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 */
    98112  return(NO_MEM);
    99113}
  • tags/minix3.1.2a-orig/minix/servers/pm/misc.c

    r26 r26  
    428428}
    429429
    430 PUBLIC int do_foo()
    431 {
    432         printf("Foo syscall called!\n");
    433         return OK;
    434 }
  • tags/minix3.1.2a-orig/minix/servers/pm/proto.h

    r26 r26  
    5757
    5858/* misc.c */
    59 _PROTOTYPE( int do_foo, (void)                                  );
    6059_PROTOTYPE( int do_reboot, (void)                                       );
    6160_PROTOTYPE( int do_procstat, (void)                                     );
  • tags/minix3.1.2a-orig/minix/servers/pm/table.c

    r26 r26  
    111111        no_sys,         /* 93 = truncate */
    112112        no_sys,         /* 94 = ftruncate */
    113         do_foo,         /* 95 = foo */
    114113};
    115114/* This should not fail with "array size is negative": */
  • tags/minix3.1.2a-orig/minix/tools/Makefile

    r26 r26  
    1111        ../servers/fs/fs \
    1212        ../servers/rs/rs \
     13        ../drivers/tty/tty \
    1314        ../servers/ds/ds \
    14         ../drivers/tty/tty \
     15        ../servers/ss/ss \
    1516        ../drivers/memory/memory \
    1617        ../drivers/log/log \
Note: See TracChangeset for help on using the changeset viewer.