コード例 #1
0
ファイル: shared_memory.cpp プロジェクト: tanerguven/MakarnaX
void shm_task_free(Task* t) {
	// print_info(">> task_free_shared_memory\n");
	ASSERT(t == task_curr);

	while (t->shared_mem_list.size() > 0) {
		SharedMemDesc *d = t->shared_mem_list.front();
		detach_shared_mem(d);
		/* hatirlatma: detach_shared_mem listeden siliyor */
	}
	ASSERT(t->shared_mem_list.size() == 0);
}
コード例 #2
0
ファイル: shared_memory.cpp プロジェクト: tanerguven/MakarnaX
/* dettach shared memory from calling process addres space */
void sys_shmdt() {
	Trapframe *tf = task_curr->registers();
	const void* shmaddr = (const void*)get_param2(tf);

	uint32_t eflags = eflags_read();
	cli();

	SharedMemList_t::iterator i = task_curr->shared_mem_list.begin();
	SharedMemList_t::iterator end = task_curr->shared_mem_list.end();
	for ( ; i != end ; i++) {
		if (i->value()->start == (uint32_t)shmaddr) {
			break;
		}
	}
	if (i == end) {
		eflags_load(eflags);
		return set_return(tf, -1);
	}

	detach_shared_mem(i->value());
	eflags_load(eflags);

	return set_return(tf, 0);
}
コード例 #3
0
ファイル: SharedMatrixDouble.cpp プロジェクト: jfellus/agpca
void MatrixDouble::detach() {
	 detach_shared_mem(((size_t*)data)-2);
}
コード例 #4
0
ファイル: shared_mem.cpp プロジェクト: jfellus/agem
void delete_shared_mem(void* ptr, int _shmid, const char* id) {
	detach_shared_mem(ptr);
	unlink(id);
	if(shmctl(_shmid, IPC_RMID, 0) < 0) throw "Unable to delete shared memory";
}