Module: xenomai-forge Branch: next Commit: 7ed37b19ae6926ab2e241ccecb7923ac1828215f URL: http://git.xenomai.org/?p=xenomai-forge.git;a=commit;h=7ed37b19ae6926ab2e241ccecb7923ac1828215f
Author: Philippe Gerum <r...@xenomai.org> Date: Wed May 7 11:20:28 2014 +0200 copperplate/internal: drop copperplate_probe_node() copperplate_probe_node() has become redundant, as Cobalt has introduced a strict real-time replacement for the kill(2) interface. Therefore kill(pid, 0) is now available to both cores for probing for a node. --- lib/copperplate/cluster.c | 8 +++++++- lib/copperplate/internal.c | 18 ------------------ lib/copperplate/internal.h | 2 -- 3 files changed, 7 insertions(+), 21 deletions(-) diff --git a/lib/copperplate/cluster.c b/lib/copperplate/cluster.c index a36fd30..30d50c1 100644 --- a/lib/copperplate/cluster.c +++ b/lib/copperplate/cluster.c @@ -152,7 +152,13 @@ static int cluster_probe(struct hashobj *hobj) if (cobj->cnode == __node_id) return 1; /* Trivial check: is it ours? */ - return copperplate_probe_node(cobj->cnode); + /* + * The node identifier is actually the main thread pid, so if + * we can send the latter a signal, the node is deemed active. + * Over Cobalt, the main thread is always shadowed, therefore + * we may use Cobalt's kill() service to probe for it. + */ + return __RT(kill(cobj->cnode, 0)); } int cluster_addobj(struct cluster *c, const char *name, diff --git a/lib/copperplate/internal.c b/lib/copperplate/internal.c index 16513e9..5513b2c 100644 --- a/lib/copperplate/internal.c +++ b/lib/copperplate/internal.c @@ -52,19 +52,6 @@ pid_t copperplate_get_tid(void) #include "cobalt/internal.h" -int copperplate_probe_node(unsigned int id) -{ - /* - * XXX: this call does NOT migrate to secondary mode therefore - * may be used in time-critical contexts. However, since the - * nucleus has to know about a probed thread to find out - * whether it exists, copperplate_init() must always be - * invoked from a real-time shadow, so that __node_id can be - * matched. - */ - return pthread_probe_np((pid_t)id) == 0; -} - int copperplate_create_thread(struct corethread_attributes *cta, pthread_t *tid) { @@ -127,11 +114,6 @@ int copperplate_kill_tid(pid_t tid, int sig) #else /* CONFIG_XENO_MERCURY */ -int copperplate_probe_node(unsigned int id) -{ - return kill((pid_t)id, 0) == 0; -} - int copperplate_kill_tid(pid_t tid, int sig) { return syscall(__NR_tkill, tid, sig) ? -errno : 0; diff --git a/lib/copperplate/internal.h b/lib/copperplate/internal.h index d195ac0..fa3e5d1 100644 --- a/lib/copperplate/internal.h +++ b/lib/copperplate/internal.h @@ -79,8 +79,6 @@ pid_t copperplate_get_tid(void); int copperplate_kill_tid(pid_t tid, int sig); -int copperplate_probe_node(unsigned int id); - int copperplate_create_thread(struct corethread_attributes *cta, pthread_t *tid); _______________________________________________ Xenomai-git mailing list Xenomai-git@xenomai.org http://www.xenomai.org/mailman/listinfo/xenomai-git