diff options
author | Daniel De Graaf <dgdegra@tycho.nsa.gov> | 2012-10-15 16:51:44 +0100 |
---|---|---|
committer | Daniel De Graaf <dgdegra@tycho.nsa.gov> | 2012-10-15 16:51:44 +0100 |
commit | 02be82737e0659e231d0be71d5d5de1081cef295 (patch) | |
tree | 59f56bffaf4b8e06989a68de93e0049e36fe6dc7 /xen/common/domain.c | |
parent | 8bf7206904251db928f085caa8ef92c41cea656d (diff) | |
download | xen-02be82737e0659e231d0be71d5d5de1081cef295.tar.gz xen-02be82737e0659e231d0be71d5d5de1081cef295.tar.bz2 xen-02be82737e0659e231d0be71d5d5de1081cef295.zip |
xen: Add versions of rcu_lock_*_domain without IS_PRIV
These functions will be used to avoid duplication of IS_PRIV calls
that will be introduced in XSM hooks. This also fixes a build error
with XSM enabled introduced by 25925:d1c3375c3f11 which depends on
this patch.
Signed-off-by: Daniel De Graaf <dgdegra@tycho.nsa.gov>
Committed-by: Keir Fraser <keir@xen.org>
Diffstat (limited to 'xen/common/domain.c')
-rw-r--r-- | xen/common/domain.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/xen/common/domain.c b/xen/common/domain.c index a1aa05e03b..52489b3924 100644 --- a/xen/common/domain.c +++ b/xen/common/domain.c @@ -420,6 +420,13 @@ struct domain *rcu_lock_domain_by_id(domid_t dom) return d; } +struct domain *rcu_lock_domain_by_any_id(domid_t dom) +{ + if ( dom == DOMID_SELF ) + return rcu_lock_current_domain(); + return rcu_lock_domain_by_id(dom); +} + int rcu_lock_target_domain_by_id(domid_t dom, struct domain **d) { if ( dom == DOMID_SELF ) @@ -454,6 +461,20 @@ int rcu_lock_remote_target_domain_by_id(domid_t dom, struct domain **d) return 0; } +int rcu_lock_remote_domain_by_id(domid_t dom, struct domain **d) +{ + if ( (*d = rcu_lock_domain_by_id(dom)) == NULL ) + return -ESRCH; + + if ( *d == current->domain ) + { + rcu_unlock_domain(*d); + return -EPERM; + } + + return 0; +} + int domain_kill(struct domain *d) { int rc = 0; |