Ignore:
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            95    /* number of system calls allowed */
     1#define NCALLS            96    /* 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/syscall-add-simple-foo/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 */
    3837#define PM_PROC_NR        0     /* process manager */
    3938#define FS_PROC_NR        1     /* file system */
    4039#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 */
    4745
    4846/* Number of processes contained in the system image. */
     
    488486#  define DS_VAL_L2             m2_l2           /* second long data value */
    489487
    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 */
    494488/*===========================================================================*
    495489 *                Miscellaneous messages used by TTY                         *
  • tags/syscall-add-simple-foo/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(SS_PROC_NR) | s(SYSTEM))
     71#define USR_M (s(PM_PROC_NR) | s(FS_PROC_NR) | s(RS_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     
    8382#define PM_C    ~(c(SYS_DEVIO) | c(SYS_SDEVIO) | c(SYS_VDEVIO) | c(SYS_IRQCTL) | c(SYS_INT86))
    8483#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))
     
    9897 * Note: the quantum size must be positive in all cases!
    9998 */
    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  */
    10899PUBLIC struct boot_image image[] = {
    109100/* process nr,   pc, flags, qs,  queue, stack, traps, ipcto, call,  name */
     
    115106 { FS_PROC_NR,    0, SRV_F, 32,      4, 0,     SRV_T, SRV_M,  FS_C, "fs"    },
    116107 { 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"    },
    117109 { 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"    },
    120110 { MEM_PROC_NR,   0, SRV_F,  4,      2, 0,     SRV_T, SYS_M, MEM_C, "mem"   },
    121111 { 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  
    2020        cd ./rs && $(MAKE) $@
    2121        cd ./ds && $(MAKE) $@
    22         cd ./ss && $(MAKE) $@
    2322        cd ./is && $(MAKE) $@
    2423        cd ./init && $(MAKE) $@
     
    3029        cd ./rs && $(MAKE) EXTRA_OPTS=$(EXTRA_OPTS) build
    3130        cd ./ds && $(MAKE) EXTRA_OPTS=$(EXTRA_OPTS) build
    32         cd ./ss && $(MAKE) EXTRA_OPTS=$(EXTRA_OPTS) build
    3331        cd ./init && $(MAKE) EXTRA_OPTS=$(EXTRA_OPTS) build
    3432
  • tags/syscall-add-simple-foo/minix/servers/fs/table.c

    r26 r26  
    113113        do_truncate,    /* 93 = truncate */
    114114        do_ftruncate,   /* 94 = truncate */
     115        no_sys,         /* 95 = foo */
    115116};
    116117/* This should not fail with "array size is negative": */
  • tags/syscall-add-simple-foo/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, *best, *prev_best;
    71   int delta=-1;
     70  register struct hole *hp, *prev_ptr;
    7271  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                 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 */
    11298  return(NO_MEM);
    11399}
  • tags/syscall-add-simple-foo/minix/servers/pm/misc.c

    r26 r26  
    428428}
    429429
     430PUBLIC 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  
    5757
    5858/* misc.c */
     59_PROTOTYPE( int do_foo, (void)                                  );
    5960_PROTOTYPE( int do_reboot, (void)                                       );
    6061_PROTOTYPE( int do_procstat, (void)                                     );
  • tags/syscall-add-simple-foo/minix/servers/pm/table.c

    r26 r26  
    111111        no_sys,         /* 93 = truncate */
    112112        no_sys,         /* 94 = ftruncate */
     113        do_foo,         /* 95 = foo */
    113114};
    114115/* This should not fail with "array size is negative": */
  • tags/syscall-add-simple-foo/minix/tools/Makefile

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