Lines Matching refs:shared_header

195 	hd->shared_header = (struct shm_desc *) start_shared_area;
196 hd->shared_header->mapfile = mapfile; /* preliminary, see below */
197 hd->shared_header->incr = incr;
198 hd->shared_header->start = start_shared_area;
199 hd->shared_header->lim = start_shared_area + map_default;
200 hd->shared_header->brk = start_shared_area + sizeof(struct shm_desc);
201 hd->shared_header->stop = start_shared_area + size;
202 a_mutex_init(&hd->shared_header->lock);
203 hd->heap = &hd->shared_header->heap;
204 hd->pages = &hd->shared_header->pages;
205 hd->shared_header->mapfile = mapfile ?
206 strcpy(hd->shared_header->mapfile_buf, mapfile) : mapfile;
209 hd->shared_header->processes = 1; /* done last, for synchronisation */
233 /* preliminarily map admin page to look at the shared_header */
280 hd->shared_header = (struct shm_desc *) start_shared_area;
281 hd->heap = &hd->shared_header->heap;
282 hd->pages = &hd->shared_header->pages;
283 a_mutex_lock(&hd->shared_header->lock);
284 hd->shared_header->processes++;
285 a_mutex_unlock(&hd->shared_header->lock);
294 if (!hd->shared_header)
299 a_mutex_lock(&hd->shared_header->lock);
300 if (--hd->shared_header->processes == 0 && hd->shared_header->mapfile)
302 if (unlink(hd->shared_header->mapfile) == -1 && errno != ENOENT)
307 a_mutex_unlock(&hd->shared_header->lock);
319 a_mutex_lock(&hd->shared_header->lock);
321 p = hd->shared_header->brk;
326 avail = hd->shared_header->lim - p;
329 word needed = RoundTo(size - avail, hd->shared_header->incr);
330 if (hd->shared_header->lim + needed > hd->shared_header->stop)
337 if ((char *) mmap(hd->shared_header->lim, needed,
340 (hd->shared_header->mapfile? MAP_FILE: MAP_ANONYMOUS)|
342 (hd->shared_header->mapfile? MAP_SHARED: MAP_PRIVATE)|MAP_FIXED,
344 (off_t) (hd->shared_header->lim - hd->shared_header->start))
345 != hd->shared_header->lim)
351 hd->shared_header->lim += needed;
353 hd->shared_header->brk = p + size;
356 a_mutex_unlock(&hd->shared_header->lock);
377 if (!hd->shared_header)
382 return write(fd, hd->shared_header->start,
383 hd->shared_header->brk - hd->shared_header->start);
397 if (!hd->shared_header)
404 start = hd->shared_header->start;
405 lim = hd->shared_header->lim;
406 processes = hd->shared_header->processes;
407 mapfile = hd->shared_header->mapfile;
409 (void) strcpy(mapfile_buf, hd->shared_header->mapfile);
415 if (start != hd->shared_header->start)
420 hd->shared_header->processes = processes;
421 hd->shared_header->mapfile = mapfile ?
422 strcpy(hd->shared_header->mapfile_buf, mapfile_buf) : mapfile;
427 hd->shared_header->lim = hd->shared_header->stop;
429 if (hd->shared_header->lim > lim)
432 hd->shared_header->lim - lim,
444 else if (hd->shared_header->lim < lim)
446 if (munmap(hd->shared_header->lim, lim - hd->shared_header->lim) < 0)
454 hd->shared_header->brk - start - sizeof(struct shm_desc));
469 if (!hd->shared_header)
471 return ptr >= (generic_ptr) hd->shared_header->start
472 && ptr < (generic_ptr) hd->shared_header->brk;