mirror of
https://github.com/genodelabs/genode.git
synced 2025-03-22 20:15:20 +00:00
NOVA: Use everywhere same value for a invalid cap
This commit is contained in:
parent
e44648e1ab
commit
e3a7d2220d
@ -183,7 +183,7 @@ namespace Genode {
|
|||||||
if (_rcv_pt_sel_cnt < _rcv_pt_sel_max)
|
if (_rcv_pt_sel_cnt < _rcv_pt_sel_max)
|
||||||
return _rcv_pt_sel[_rcv_pt_sel_cnt++].sel;
|
return _rcv_pt_sel[_rcv_pt_sel_cnt++].sel;
|
||||||
else
|
else
|
||||||
return 0;
|
return ~0UL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -294,7 +294,8 @@ namespace Genode {
|
|||||||
if (!item) break;
|
if (!item) break;
|
||||||
if (_rcv_pt_sel_max >= MAX_CAP_ARGS) break;
|
if (_rcv_pt_sel_max >= MAX_CAP_ARGS) break;
|
||||||
|
|
||||||
_rcv_pt_sel[_rcv_pt_sel_max].sel = item->crd >> 12;
|
Nova::Crd cap = Nova::Crd(item->crd);
|
||||||
|
_rcv_pt_sel[_rcv_pt_sel_max].sel = cap.is_null() ? ~0UL : cap.base();
|
||||||
_rcv_pt_sel[_rcv_pt_sel_max++].del = item->is_del();
|
_rcv_pt_sel[_rcv_pt_sel_max++].del = item->is_del();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -26,8 +26,13 @@ namespace Genode {
|
|||||||
|
|
||||||
struct Native_thread
|
struct Native_thread
|
||||||
{
|
{
|
||||||
|
enum { INVALID_INDEX = ~0UL };
|
||||||
|
|
||||||
addr_t ec_sel; /* NOVA cap selector for execution context */
|
addr_t ec_sel; /* NOVA cap selector for execution context */
|
||||||
addr_t exc_pt_sel; /* base of event portal window */
|
addr_t exc_pt_sel; /* base of event portal window */
|
||||||
|
|
||||||
|
Native_thread() : ec_sel(INVALID_INDEX),
|
||||||
|
exc_pt_sel (INVALID_INDEX) { }
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef Native_thread Native_thread_id;
|
typedef Native_thread Native_thread_id;
|
||||||
@ -92,6 +97,7 @@ namespace Genode {
|
|||||||
bool _trans_map;
|
bool _trans_map;
|
||||||
void * _ptr;
|
void * _ptr;
|
||||||
|
|
||||||
|
enum { INVALID_INDEX = ~0UL };
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
explicit
|
explicit
|
||||||
@ -123,18 +129,24 @@ namespace Genode {
|
|||||||
bool valid() const
|
bool valid() const
|
||||||
{
|
{
|
||||||
return !_cap.dst.is_null() &&
|
return !_cap.dst.is_null() &&
|
||||||
_cap.dst.base() != ~0UL;
|
_cap.dst.base() != INVALID_INDEX;
|
||||||
}
|
}
|
||||||
|
|
||||||
Dst dst() const { return _cap.dst; }
|
Dst dst() const { return _cap.dst; }
|
||||||
void * local() const { return _ptr; }
|
void * local() const { return _ptr; }
|
||||||
addr_t local_name() const { return _cap.dst.base(); }
|
|
||||||
|
addr_t local_name() const {
|
||||||
|
if (valid())
|
||||||
|
return _cap.dst.base();
|
||||||
|
else
|
||||||
|
return INVALID_INDEX;
|
||||||
|
}
|
||||||
|
|
||||||
static Dst invalid() { return Dst(); }
|
static Dst invalid() { return Dst(); }
|
||||||
|
|
||||||
static Native_capability invalid_cap()
|
static Native_capability invalid_cap()
|
||||||
{
|
{
|
||||||
return Native_capability(~0UL);
|
return Native_capability(INVALID_INDEX);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Invoke map syscall instead of translate_map call */
|
/** Invoke map syscall instead of translate_map call */
|
||||||
|
@ -63,7 +63,9 @@ static inline Genode::Native_thread_id thread_get_my_native_id()
|
|||||||
Genode::Thread_base *myself = Genode::Thread_base::myself();
|
Genode::Thread_base *myself = Genode::Thread_base::myself();
|
||||||
|
|
||||||
if (myself == 0) {
|
if (myself == 0) {
|
||||||
Genode::Native_thread_id main_tid = { 0, 0 };
|
Genode::Native_thread_id main_tid;
|
||||||
|
main_tid.ec_sel = 0;
|
||||||
|
main_tid.exc_pt_sel = 0;
|
||||||
return main_tid;
|
return main_tid;
|
||||||
} else
|
} else
|
||||||
return myself->tid();
|
return myself->tid();
|
||||||
@ -72,7 +74,7 @@ static inline Genode::Native_thread_id thread_get_my_native_id()
|
|||||||
|
|
||||||
static inline Genode::Native_thread_id thread_invalid_id()
|
static inline Genode::Native_thread_id thread_invalid_id()
|
||||||
{
|
{
|
||||||
Genode::Native_thread_id tid = { ~0UL, ~0UL };
|
Genode::Native_thread_id tid;
|
||||||
return tid;
|
return tid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ Cpu_session_component::native_cap(Thread_capability thread_cap)
|
|||||||
{
|
{
|
||||||
Cpu_thread_component *thread = _lookup_thread(thread_cap);
|
Cpu_thread_component *thread = _lookup_thread(thread_cap);
|
||||||
if (!thread)
|
if (!thread)
|
||||||
return Native_capability(0, 0);
|
return Native_capability::invalid_cap();
|
||||||
|
|
||||||
return thread->platform_thread()->native_cap();
|
return thread->platform_thread()->native_cap();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user