Interface for setting CPU connection affinity

This commit is contained in:
Norman Feske 2013-08-08 12:01:21 +02:00
parent 2e6504df62
commit fd95637289
2 changed files with 30 additions and 11 deletions

View File

@ -43,6 +43,20 @@ namespace Genode {
On_destruction _on_destruction; On_destruction _on_destruction;
Capability<SESSION_TYPE> _session(Affinity const &affinity,
const char *format_args, va_list list)
{
char buf[FORMAT_STRING_SIZE];
String_console sc(buf, FORMAT_STRING_SIZE);
sc.vprintf(format_args, list);
va_end(list);
/* call parent interface with the resulting argument buffer */
return env()->parent()->session<SESSION_TYPE>(buf, affinity);
}
public: public:
/** /**
@ -74,23 +88,26 @@ namespace Genode {
void on_destruction(On_destruction od) { _on_destruction = od; } void on_destruction(On_destruction od) { _on_destruction = od; }
/** /**
* Shortcut for env()->parent()->session() function * Shortcut for env()->parent()->session()
*/ */
Capability<SESSION_TYPE> session(const char *format_args, ...) Capability<SESSION_TYPE> session(const char *format_args, ...)
{ {
char buf[FORMAT_STRING_SIZE];
/* process format string */
va_list list; va_list list;
va_start(list, format_args); va_start(list, format_args);
String_console sc(buf, FORMAT_STRING_SIZE); return _session(Affinity(), format_args, list);
sc.vprintf(format_args, list); }
va_end(list); /**
* Shortcut for env()->parent()->session()
*/
Capability<SESSION_TYPE> session(Affinity const &affinity,
char const *format_args, ...)
{
va_list list;
va_start(list, format_args);
/* call parent interface with the resulting argument buffer */ return _session(affinity, format_args, list);
return env()->parent()->session<SESSION_TYPE>(buf);
} }
}; };
} }

View File

@ -30,10 +30,12 @@ namespace Genode {
* \param priority designated priority of all threads created * \param priority designated priority of all threads created
* with this CPU session * with this CPU session
*/ */
Cpu_connection(const char *label = "", long priority = DEFAULT_PRIORITY) Cpu_connection(char const *label = "",
long priority = DEFAULT_PRIORITY,
Affinity const &affinity = Affinity())
: :
Connection<Cpu_session>( Connection<Cpu_session>(
session("priority=0x%lx, ram_quota=32K, label=\"%s\"", session(affinity, "priority=0x%lx, ram_quota=32K, label=\"%s\"",
priority, label)), priority, label)),
Cpu_session_client(cap()) { } Cpu_session_client(cap()) { }
}; };