]> Zhao Yanbai Git Server - minix.git/commitdiff
Add live update-friendly annotations. 06/3106/1
authorCristiano Giuffrida <giuffrida@cs.vu.nl>
Tue, 11 Mar 2014 17:01:27 +0000 (18:01 +0100)
committerDavid van Moolenbroek <david@minix3.org>
Thu, 17 Sep 2015 13:25:38 +0000 (13:25 +0000)
Change-Id: I7d7d79893836a20799ca548a350f3288e92581f0

22 files changed:
minix/drivers/power/acpi/acpi.c
minix/fs/mfs/buf.h
minix/fs/procfs/main.c
minix/fs/procfs/tree.c
minix/include/minix/const.h
minix/include/minix/ipc.h
minix/include/minix/safecopies.h
minix/include/minix/timers.h
minix/kernel/proc.h
minix/net/inet/generic/arp.c
minix/net/inet/generic/event.h
minix/net/inet/generic/ip.c
minix/net/inet/generic/ip_int.h
minix/net/inet/inet_config.c
minix/servers/devman/main.c
minix/servers/ds/store.h
minix/servers/is/dmp_ds.c
minix/servers/rs/type.h
minix/servers/vfs/fproc.h
minix/servers/vfs/select.c
minix/servers/vm/pagetable.c
minix/servers/vm/slaballoc.c

index a58c0624385fdc05ab09a21063f893b9fc23915f..6732b5529506d5d8d0847cf575b704186eeef9a7 100644 (file)
@@ -100,8 +100,22 @@ void init_acpi(void)
 
 static int sef_cb_init_fresh(int type, sef_init_info_t *info)
 {
+       int r;
+
        init_acpi();
 
+       /* Let SEF know about ACPI special cache word. */
+       r = sef_llvm_add_special_mem_region((void*)0xCACACACA, 1,
+           "%MMAP_CACHE_WORD");
+       if(r < 0) {
+           printf("acpi: sef_llvm_add_special_mem_region failed %d\n", r);
+       }
+
+       /* XXX To-do: acpi requires custom state transfer handlers for
+        * unions acpi_operand_object and acpi_generic_state (and nested unions)
+        * for generic state transfer to work correctly.
+        */
+
        return OK;
 }
 
index 89809589333b8839b6f3aa64ab5b2dc740662e09..ce997668eeb5779b83aa2a8bcb48c068e5be43f2 100644 (file)
@@ -3,7 +3,7 @@
 
 #include "clean.h"
 
-union fsdata_u {
+union ixfer_fsdata_u {
     char b__data[1];                   /* ordinary user data */
     struct direct b__dir[1];           /* directory block */
     zone_t  b__v2_ind[1];              /* V2 indirect block */
@@ -12,10 +12,10 @@ union fsdata_u {
 };
 
 /* These defs make it possible to use to bp->b_data instead of bp->b.b__data */
-#define b_data(b)   ((union fsdata_u *) b->data)->b__data
-#define b_dir(b)    ((union fsdata_u *) b->data)->b__dir
-#define b_v2_ind(b) ((union fsdata_u *) b->data)->b__v2_ind
-#define b_v2_ino(b) ((union fsdata_u *) b->data)->b__v2_ino
-#define b_bitmap(b) ((union fsdata_u *) b->data)->b__bitmap
+#define b_data(b)   ((union ixfer_fsdata_u *) b->data)->b__data
+#define b_dir(b)    ((union ixfer_fsdata_u *) b->data)->b__dir
+#define b_v2_ind(b) ((union ixfer_fsdata_u *) b->data)->b__v2_ind
+#define b_v2_ino(b) ((union ixfer_fsdata_u *) b->data)->b__v2_ino
+#define b_bitmap(b) ((union ixfer_fsdata_u *) b->data)->b__bitmap
 
 #endif
index 6ad523500c985f291b7b22230f145e332ab333ae..3f39382f71570c0274c38414cb511f2edb42c0f5 100644 (file)
@@ -68,7 +68,7 @@ init_hook(void)
  */
 int main(void)
 {
-       struct inode_stat stat;
+       static struct inode_stat stat;
        int r;
 
        /*
index cb977d328d2618b3b7a0f546d87dac15eff8b38b..4e859c71f262c8a145a7058e3278805042be1583 100644 (file)
@@ -2,9 +2,13 @@
 
 #include "inc.h"
 
-struct proc proc[NR_PROCS + NR_TASKS];
-struct mproc mproc[NR_PROCS];
-struct fproc fproc[NR_PROCS];
+typedef struct proc ixfer_proc_t;
+typedef struct fproc ixfer_fproc_t;
+typedef struct mproc ixfer_mproc_t;
+
+ixfer_proc_t proc[NR_PROCS + NR_TASKS];
+ixfer_mproc_t mproc[NR_PROCS];
+ixfer_fproc_t fproc[NR_PROCS];
 
 static int nr_pid_entries;
 
index 5131e9a00f4437a050e8982d6b697f3180dc40b7..c69d76b7167236e058ebc5efbdbd3062efff716e 100644 (file)
 #endif
 #endif
 
+#ifndef _MINIX_MAGIC
+#define __ALIGNED(X) __aligned(X)
+#else
+#define __ALIGNED(X)
+#endif
+
 #define EXTERN        extern   /* used in *.h files */
 
 #define TRUE               1   /* used for turning integers into Booleans */
index 2f62a0a18515387c32f355bbb6d2ef2fdfbd7e67..6f444d3331912771aa0fc19da174b5e701f8329d 100644 (file)
@@ -2024,7 +2024,7 @@ typedef struct {
 } mess_vmmcp_reply;
 _ASSERT_MSG_SIZE(mess_vmmcp_reply);
 
-typedef struct {
+typedef struct noxfer_message {
        endpoint_t m_source;            /* who sent the message */
        int m_type;                     /* what kind of message is it */
        union {
@@ -2254,7 +2254,7 @@ typedef struct {
 
                u8_t size[56];  /* message payload may have 56 bytes at most */
        };
-} message __aligned(16);
+} message __ALIGNED(16);
 
 /* Ensure the complete union respects the IPC assumptions. */
 typedef int _ASSERT_message[/* CONSTCOND */sizeof(message) == 64 ? 1 : -1];
index 3f875614b1f7c11cc6d11dc8ebdab5627cf018ee..5fe730339983b567fc2e38f59af68e883224d7da 100644 (file)
@@ -9,7 +9,7 @@
 
 typedef struct {
        int cp_flags;   /* CPF_* below */
-       union {
+       union ixfer_cp_u{
                struct {
                        /* CPF_DIRECT */
                        endpoint_t      cp_who_to;      /* grantee */
index 44c039791fa261a7a170e9ae5791c2e3d5f5ff4d..82f162fdaa53dd1bd1e738c5cd795e6227c2e5e5 100644 (file)
@@ -23,7 +23,7 @@
 
 struct minix_timer;
 typedef void (*tmr_func_t)(struct minix_timer *tp);
-typedef union { int ta_int; long ta_long; void *ta_ptr; } tmr_arg_t;
+typedef union { int ta_int; long ta_long; void *ta_ptr; } ixfer_tmr_arg_t;
 
 /* A minix_timer_t variable must be declare for each distinct timer to be used.
  * The timers watchdog function and expiration time are automatically set
@@ -34,7 +34,7 @@ typedef struct minix_timer
   struct minix_timer   *tmr_next;      /* next in a timer chain */
   clock_t      tmr_exp_time;   /* expiration time */
   tmr_func_t   tmr_func;       /* function to call when expired */
-  tmr_arg_t    tmr_arg;        /* random argument */
+  ixfer_tmr_arg_t tmr_arg;     /* random argument */
 } minix_timer_t;
 
 /* Used when the timer is not active. */
index f3115354e3e3cabda30fec967abfefe2e72d9a92..559e3585044e2eefaafd001d30da450ab03e27dc 100644 (file)
@@ -96,7 +96,7 @@ struct proc {
 #define VMSTYPE_MAP            3
 
        int             type;           /* suspended operation */
-       union {
+       union ixfer_saved{
                /* VMSTYPE_SYS_MESSAGE */
                message         reqmsg; /* suspended request message */
        } saved;
@@ -104,7 +104,7 @@ struct proc {
        /* Parameters of request to VM */
        int             req_type;
        endpoint_t      target;
-       union {
+       union ixfer_params{
                struct {
                        vir_bytes       start, length;  /* memory range */
                        u8_t            writeflag;      /* nonzero for write access */
index 6fe6ad4a832fe4a0cabe9b4a393859778bd478e4..38593b55307b4d3ec84b02aeb40a07d16460259e 100644 (file)
@@ -38,7 +38,7 @@ typedef struct arp46
        ether_addr_t a46_dstaddr;
        ether_addr_t a46_srcaddr;
        ether_type_t a46_ethtype;
-       union
+       union ixfer_arp46_u
        {
                struct
                {
index 568371268e4a1f4f1a19b3353a4a9bedd86034ad..f5afed7fadabbcf544674fb64e77873b374e0247 100644 (file)
@@ -13,13 +13,12 @@ Copyright 1995 Philip Homburg
 
 struct event;
 
-typedef union ev_arg
+typedef struct ev_arg
 {
-       int ev_int;
        void *ev_ptr;
 } ev_arg_t;
 
-typedef void (*ev_func_t) ARGS(( struct event *ev, union ev_arg eva ));
+typedef void (*ev_func_t) ARGS(( struct event *ev, ev_arg_t eva ));
 
 typedef struct event
 {
index c41fef004352c55b06edede41e9f83cd2f81dfde..05792f643682faea344cfc58f88aa55e64c771e6 100644 (file)
@@ -80,6 +80,7 @@ void ip_init()
                ip_port->ip_dl_type= icp->ic_devtype;
                ip_port->ip_mtu= IP_DEF_MTU;
                ip_port->ip_mtu_max= IP_MAX_PACKSIZE;
+               memset(&ip_port->ip_dl, 0, sizeof(ip_port->ip_dl));
 
                switch(ip_port->ip_dl_type)
                {
index a1c8cf73504a3b40cd34a1c77a2539d787d6a00c..95fcaec4aecd0a605d0c4a5b806fbcb392b1c804 100644 (file)
@@ -29,7 +29,7 @@ typedef struct ip_port
 {
        int ip_flags, ip_dl_type;
        int ip_port;
-       union
+       union sxfer_ip_dl_u
        {
                struct
                {
@@ -45,9 +45,11 @@ typedef struct ip_port
                } dl_eth;
                struct
                {
+                       int dummy_int[3];
                        int ps_port;
                        acc_t *ps_send_head;
                        acc_t *ps_send_tail;
+                       void* dummy_ptr[3];
                } dl_ps;
        } ip_dl;
        ipaddr_t ip_ipaddr;
index 004074797bda92c8741e093143353799aedb9812..8bf9bf52048f7aa55b10b7baaa65ae4df62b474b 100644 (file)
@@ -109,7 +109,7 @@ static void check_dev(int type, int ifno)
                char    *defname;
                mode_t  mode;
                u8_t    minor_off;
-       } devlist[] = {
+       } devlist[5] = {
                {       (char *) "/dev/eth",    0600,   ETH_DEV_OFF     },
                {       (char *) "/dev/psip",   0600,   PSIP_DEV_OFF    },
                {       (char *) "/dev/ip",     0600,   IP_DEV_OFF      },
@@ -423,7 +423,9 @@ void *alloc(size_t size)
 {
        /* Allocate memory on the heap with sbrk(). */
 
-       return malloc(size);
+       void *addr = malloc(size);
+       memset(addr, 0, size);
+       return addr;
 }
 
 /*
index 09e683adcb8b8dd4f31203493730fa7f2f825361..74a427cf53abd1f3fd311d68a12d50b37479f1e7 100644 (file)
@@ -70,8 +70,8 @@ read_hook
 int main (int argc, char* argv[])
 {
 
-       struct fs_hooks hooks;
-       struct inode_stat root_stat;
+       static struct fs_hooks hooks;
+       static struct inode_stat root_stat;
 
        /* fill in the hooks */
        memset(&hooks, 0, sizeof(hooks));
index 6868d38e3f973692c4f0176ff24cbf4f8306b083..e5fad1e93ee7a491a6963a08b73b405486692c36 100644 (file)
@@ -18,9 +18,9 @@ struct data_store {
        char    key[DS_MAX_KEYLEN];     /* key to lookup information */
        char    owner[DS_MAX_KEYLEN];
 
-       union {
+       union dsi_u {
                unsigned u32;
-               struct {
+               struct dsi_mem {
                        void *data;
                        size_t length;
                        size_t reallen;
index 55da783ee3974d343d0d71e26309a1b7f94b2060..795c52317f62940ba7345141d3ad2468d926636d 100644 (file)
@@ -3,7 +3,7 @@
 
 #define LINES 22
 
-static struct data_store ds_store[NR_DS_KEYS];
+static struct data_store noxfer_ds_store[NR_DS_KEYS];
 
 void data_store_dmp()
 {
@@ -11,7 +11,7 @@ void data_store_dmp()
   static int prev_i = 0;
   int i, n = 0;
 
-  if (getsysinfo(DS_PROC_NR, SI_DATA_STORE, ds_store, sizeof(ds_store)) != OK) {
+  if (getsysinfo(DS_PROC_NR, SI_DATA_STORE, noxfer_ds_store, sizeof(noxfer_ds_store)) != OK) {
        printf("Error obtaining table from DS. Perhaps recompile IS?\n");
        return;
   }
@@ -19,7 +19,7 @@ void data_store_dmp()
   printf("Data store contents:\n");
   printf("-slot- -----------key----------- -----owner----- ---type--- ----value---\n");
   for(i = prev_i; i < NR_DS_KEYS && n < LINES; i++) {
-       p = &ds_store[i];
+       p = &noxfer_ds_store[i];
        if(!(p->flags & DSF_IN_USE))
                continue;
 
index 121ba74622150b2d34b396394e7bc548872a7b6d..ea5a802d4be37e651e53d93c21c11c44e4967c37 100644 (file)
@@ -52,6 +52,7 @@ struct rupdate {
 };
 
 /* Definition of an entry of the system process table. */
+typedef struct priv ixfer_priv_s;
 struct rproc {
   struct rprocpub *r_pub;       /* pointer to the corresponding public entry */
   struct rproc *r_old_rp;       /* pointer to the slot with the old version */
@@ -83,7 +84,7 @@ struct rproc {
   char *r_exec;                        /* Executable image */ 
   size_t r_exec_len;           /* Length of image */
 
-  struct priv r_priv;          /* Privilege structure to be passed to the
+  ixfer_priv_s r_priv;         /* Privilege structure to be passed to the
                                 * kernel.
                                 */
   uid_t r_uid;
index 51c0fffa2184668bad993222f5f94bb618dd56a2..d543be6f83e087ba1b20cb1c062cc6f0202f9e7a 100644 (file)
@@ -5,6 +5,7 @@
 
 #include <sys/select.h>
 #include <minix/safecopies.h>
+#include <minix/sef.h>
 
 /* This is the per-process information.  A slot is reserved for each potential
  * process. Thus NR_PROCS must be the same as in the kernel. It is not
index c042698ff1a3db52a7817f52b1113f8ca5f0cfec..490fa3802bb843f52e95092acf5953f59f7457a2 100644 (file)
 #define FROM_PROC 0
 #define TO_PROC   1
 
+typedef fd_set *ixfer_fd_set_ptr;
+
 static struct selectentry {
   struct fproc *requestor;     /* slot is free iff this is NULL */
   endpoint_t req_endpt;
   fd_set readfds, writefds, errorfds;
   fd_set ready_readfds, ready_writefds, ready_errorfds;
-  fd_set *vir_readfds, *vir_writefds, *vir_errorfds;
+  ixfer_fd_set_ptr vir_readfds, vir_writefds, vir_errorfds;
   struct filp *filps[OPEN_MAX];
   int type[OPEN_MAX];
   int nfds, nreadyfds;
index 342774d379aeedba99ad4d656faa5a09b6fb1792..e7885bc64d968ba97300c8e9f1218dea5f339977 100644 (file)
@@ -147,7 +147,7 @@ static u32_t findhole(int pages)
 /* Find a space in the virtual address space of VM. */
        u32_t curv;
        int pde = 0, try_restart;
-       static u32_t lastv = 0;
+       static void *lastv = 0;
        pt_t *pt = &vmprocess->vm_pt;
        vir_bytes vmin, vmax;
        u32_t holev = NO_MEM;
@@ -163,7 +163,7 @@ static u32_t findhole(int pages)
        assert((vmax % VM_PAGE_SIZE) == 0);
        assert(pages > 0);
 
-       curv = lastv;
+       curv = (u32_t) lastv;
        if(curv < vmin || curv >= vmax)
                curv = vmin;
 
@@ -198,7 +198,7 @@ static u32_t findhole(int pages)
 
                        /* if it's big enough, return it */
                        if(holesize == pages) {
-                               lastv = curv + VM_PAGE_SIZE;
+                               lastv = (void*) (curv + VM_PAGE_SIZE);
                                return holev;
                        }
                }
index 6b19e61f5bcc3c7d83dba53b445bc8f1ac2d66c7..a208548c1597214f2791fc0b3d6190cb55e66336 100644 (file)
@@ -116,11 +116,13 @@ struct sdh {
 #define JUNK  0xdeadbeef
 #define NOJUNK 0xc0ffee
 
+struct slabdata {
+       u8_t    data[DATABYTES];
+       struct  sdh sdh;
+};
+
 static struct slabheader {
-       struct slabdata {
-               u8_t    data[DATABYTES];
-               struct  sdh sdh;
-       } *list_head;
+       struct slabdata *list_head;
 } slabs[SLABSIZES];
 
 static int objstats(void *, int, struct slabheader **, struct slabdata