Jan Kiszka wrote:
> Philippe Gerum wrote:
>> On Thu, 2007-10-18 at 22:46 +0200, Jan Kiszka wrote:
>>> Hi Philippe,
>>>
>>> what's the point about
>>>
>>>     if (xnsched_resched_p())
>>>             xnpod_schedule();
>>>
>>> at the beginning of do_hisyscall_event() [1]? Could you provide a
>>> comment for the background of this hunk? Or can we even remove it?
>> No, we can't. It's a Blackfin-specific thing in disguise actually, so we
>> may make this code conditional through some arch-dependent wrapper
>> though.
>> http://www.rts.uni-hannover.de/xenomai/lxr/source/include/asm-blackfin/bits/pod.h#141
>>
> 
> Something like the attached patch?

Because you pointed out that overloading functions names with macros can
be problematic (with older compilers?), here comes a variant free of
such a pattern.

Jan
---
 include/asm-blackfin/system.h |    7 +++++++
 include/asm-generic/system.h  |    4 ++++
 ksrc/nucleus/shadow.c         |    3 +--
 3 files changed, 12 insertions(+), 2 deletions(-)

Index: xenomai/include/asm-blackfin/system.h
===================================================================
--- xenomai.orig/include/asm-blackfin/system.h
+++ xenomai/include/asm-blackfin/system.h
@@ -95,6 +95,13 @@ static inline void xnarch_free_host_mem 
     kfree(chunk);
 }
 
+static inline void __xnarch_hisyscall_entry(void)
+{
+	if (xnsched_resched_p())
+		xnpod_schedule();
+}
+#define xnarch_hisyscall_entry	__xnarch_hisyscall_entry
+
 #ifdef __cplusplus
 }
 #endif
Index: xenomai/include/asm-generic/system.h
===================================================================
--- xenomai.orig/include/asm-generic/system.h
+++ xenomai/include/asm-generic/system.h
@@ -410,6 +410,10 @@ static inline int xnarch_remap_io_page_r
     return wrap_remap_io_page_range(vma,from,to,size,prot);
 }
 
+#ifndef xnarch_hisyscall_entry
+static inline void xnarch_hisyscall_entry(void)	{ }
+#endif
+
 #ifdef __cplusplus
 }
 #endif
Index: xenomai/ksrc/nucleus/shadow.c
===================================================================
--- xenomai.orig/ksrc/nucleus/shadow.c
+++ xenomai/ksrc/nucleus/shadow.c
@@ -1878,8 +1878,7 @@ static inline int do_hisyscall_event(uns
 	if (!xnpod_active_p())
 		goto no_skin;
 
-	if (xnsched_resched_p())
-		xnpod_schedule();
+	xnarch_hisyscall_entry();
 
 	p = current;
 	thread = xnshadow_thread(p);

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core

Reply via email to