﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc	field_blocks	field_dependson	field_seealso
670	Allow arbitrary number of answerboxes per task	Jakub Jermář	Jakub Jermář	"HelenOS has always used one main answerbox for task's IPC communication. The userspace async framework multiplexes this single communication endpoint for multiple logical connections. Besides of that, the kernel also uses other answerboxes internally such as the debugging kbox and a temporary kernel answerbox when a user page fault is being handled.

More recently, the async framework added the notion of async ports to ease writing multi-protocol components. However, async ports are still multiplexed over the main task's answerbox.

It would make a good sense to allow a task to create an arbitrary number of answerboxes and couple them with async ports. This would simplify the routing of IPC calls within the task as each logical IPC endpoint would use its own answerbox. Additionally, the realization of this idea would effectively turn HelenOS into a capability-based system (where a capability would be equal to an IPC connection, similar to how Hurd and Genode work with capabilities).

For example, the VFS now uses a complex security protocol to pass an open file from a parent task to its child. If VFS associated a port/answerbox with each open file, the parent task could pass its open files simply by connecting the child to those open files' respective answerboxes (e.g. by requesting a few callback connections from the child and forwarding them to VFS)."	enhancement	new	major		helenos/kernel/generic	mainline		ipc, ports, capabilities, async				
