Esempio n. 1
0
static int __map_heap_memory(RT_HEAP *heap, RT_HEAP_PLACEHOLDER *php)
{
	struct xnheap_desc hd;

	hd.handle = (unsigned long)php->opaque2;
	hd.size = php->mapsize;
	xnheap_area_set(&hd, php->area);
	php->mapbase = xeno_map_heap(&hd);
	if (php->mapbase == MAP_FAILED)
		return -errno;

	*heap = *php;

	return 0;
}
Esempio n. 2
0
static void *map_sem_heap(unsigned int shared)
{
	struct xnheap_desc global_hdesc, *hdesc;
	int ret;

	hdesc = shared ? &global_hdesc : &private_hdesc;
	ret = XENOMAI_SYSCALL2(__xn_sys_heap_info, hdesc, shared);
	if (ret < 0) {
		errno = -ret;
		perror("Xenomai: sys_heap_info");
		return MAP_FAILED;
	}

	return xeno_map_heap(hdesc);
}