/[hurd]/hurd-l4/wortel/startup.c
ViewVC logotype

Diff of /hurd-l4/wortel/startup.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.5 by neal, Tue Jan 11 18:15:26 2005 UTC revision 1.6 by marcus, Thu Jan 27 04:09:24 2005 UTC
# Line 79  map (l4_thread_id_t server, hurd_cap_han Line 79  map (l4_thread_id_t server, hurd_cap_han
79        allocate (server, container, offset, size, 0, &amount);        allocate (server, container, offset, size, 0, &amount);
80      }      }
81    
82    l4_msg_clear (msg);    /* SIZE better is a multiple of the page size!  */
83    l4_set_msg_label (msg, 134 /* XXX: Magic number for container_map_id.  */);    while (size > 0)
84    l4_msg_append_word (msg, container);      {
85    l4_msg_append_word (msg, offset | rights);        int i;
   l4_msg_append_word (msg, size);  
   l4_msg_append_word (msg, (l4_word_t) vaddr);  
   l4_msg_load (msg);  
86    
87    tag = l4_call (server);        l4_msg_clear (msg);
88    l4_msg_store (tag, msg);        l4_set_msg_label (msg, 134 /* XXX: Magic for container_map_id.  */);
89          l4_msg_append_word (msg, container);
90          l4_msg_append_word (msg, offset | rights);
91          l4_msg_append_word (msg, size);
92          l4_msg_append_word (msg, (l4_word_t) vaddr);
93          l4_msg_load (msg);
94    
95    return l4_msg_label (msg);        tag = l4_call (server);
96          l4_msg_store (tag, msg);
97    
98          /* Now check how much we actually got.  */
99          i = 0;
100          while (i < l4_typed_words (tag))
101            {
102              l4_map_item_t map_item;
103    
104              i += l4_msg_get_map_item (msg, i, &map_item);
105    
106              /* This better doesn't underflow!  */
107              size -= l4_size (l4_map_item_snd_fpage (map_item));
108              offset += l4_size (l4_map_item_snd_fpage (map_item));
109              vaddr = (void *)
110                (((l4_word_t) vaddr) + l4_size (l4_map_item_snd_fpage (map_item)));
111            }
112        }
113      return 0;
114  }  }
115    
116  /* Initialize libl4, setup the task, and pass control over to the main  /* Initialize libl4, setup the task, and pass control over to the main

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.6

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26