WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] [PATCH] minios: do not expose #define current to application

To: xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] [PATCH] minios: do not expose #define current to applications
From: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx>
Date: Thu, 23 Oct 2008 17:45:57 +0100
Delivery-date: Thu, 23 Oct 2008 09:46:23 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
Currently the minios headers do this:
 #define current get_current()
Obviously when porting general code to this environment, this can
cause problems !

The attached patch arranges for this only to be done if the .c file
in question declares
 #define _INSIDE_MINIOS

Suppressing the namespace pollution is necessary to get recent
upstream qemu's to compile, since they (quite properly) use `current'
as an ordinary identifier.

Ian.

Signed-off-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>

diff -r 10d338e5f741 extras/mini-os/arch/x86/sched.c
--- a/extras/mini-os/arch/x86/sched.c   Wed Oct 22 16:47:44 2008 +0100
+++ b/extras/mini-os/arch/x86/sched.c   Thu Oct 23 17:08:46 2008 +0100
@@ -34,6 +34,8 @@
  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
  * DEALINGS IN THE SOFTWARE.
  */
+
+#define _INSIDE_MINIOS
 
 #include <os.h>
 #include <hypervisor.h>
diff -r 10d338e5f741 extras/mini-os/arch/x86/traps.c
--- a/extras/mini-os/arch/x86/traps.c   Wed Oct 22 16:47:44 2008 +0100
+++ b/extras/mini-os/arch/x86/traps.c   Thu Oct 23 17:04:42 2008 +0100
@@ -1,3 +1,5 @@
+
+#define _INSIDE_MINIOS
 
 #include <os.h>
 #include <traps.h>
diff -r 10d338e5f741 extras/mini-os/fs-front.c
--- a/extras/mini-os/fs-front.c Wed Oct 22 16:47:44 2008 +0100
+++ b/extras/mini-os/fs-front.c Thu Oct 23 16:57:07 2008 +0100
@@ -23,6 +23,8 @@
  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
  * DEALINGS IN THE SOFTWARE.
  */
+
+#define _INSIDE_MINIOS
 
 #undef NDEBUG
 #include <os.h>
diff -r 10d338e5f741 extras/mini-os/include/sched.h
--- a/extras/mini-os/include/sched.h    Wed Oct 22 16:47:44 2008 +0100
+++ b/extras/mini-os/include/sched.h    Thu Oct 23 12:11:55 2008 +0100
@@ -48,8 +48,9 @@ void exit_thread(void) __attribute__((no
 void exit_thread(void) __attribute__((noreturn));
 void schedule(void);
 
+#ifdef _INSIDE_MINIOS
 #define current get_current()
-
+#endif
 
 void wake(struct thread *thread);
 void block(struct thread *thread);
diff -r 10d338e5f741 extras/mini-os/include/wait.h
--- a/extras/mini-os/include/wait.h     Wed Oct 22 16:47:44 2008 +0100
+++ b/extras/mini-os/include/wait.h     Thu Oct 23 12:26:48 2008 +0100
@@ -7,7 +7,7 @@
 
 #define DEFINE_WAIT(name)                               \
 struct wait_queue name = {                              \
-    .thread       = current,                            \
+    .thread       = get_current(),                            \
     .thread_list  = MINIOS_LIST_HEAD_INIT((name).thread_list), \
 }
 
@@ -53,7 +53,7 @@ static inline void wake_up(struct wait_q
     unsigned long flags;        \
     local_irq_save(flags);      \
     add_wait_queue(&wq, &w);    \
-    block(current);             \
+    block(get_current());       \
     local_irq_restore(flags);   \
 } while (0)
 
@@ -74,8 +74,8 @@ static inline void wake_up(struct wait_q
         /* protect the list */                                  \
         local_irq_save(flags);                                  \
         add_wait_queue(&wq, &__wait);                           \
-        current->wakeup_time = deadline;                        \
-        clear_runnable(current);                                \
+        get_current()->wakeup_time = deadline;                  \
+        clear_runnable(get_current());                          \
         local_irq_restore(flags);                               \
         if((condition) || (deadline && NOW() >= deadline))      \
             break;                                              \
@@ -83,7 +83,7 @@ static inline void wake_up(struct wait_q
     }                                                           \
     local_irq_save(flags);                                      \
     /* need to wake up */                                       \
-    wake(current);                                              \
+    wake(get_current());                                        \
     remove_wait_queue(&__wait);                                 \
     local_irq_restore(flags);                                   \
 } while(0) 
diff -r 10d338e5f741 extras/mini-os/lwip-net.c
--- a/extras/mini-os/lwip-net.c Wed Oct 22 16:47:44 2008 +0100
+++ b/extras/mini-os/lwip-net.c Thu Oct 23 17:05:44 2008 +0100
@@ -40,6 +40,8 @@
  * Author: Adam Dunkels <adam@xxxxxxx>
  *
  */
+
+#define _INSIDE_MINIOS
 
 #include <os.h>
 
diff -r 10d338e5f741 extras/mini-os/netfront.c
--- a/extras/mini-os/netfront.c Wed Oct 22 16:47:44 2008 +0100
+++ b/extras/mini-os/netfront.c Thu Oct 23 17:05:44 2008 +0100
@@ -4,6 +4,8 @@
  *
  * Does not handle fragments or extras.
  */
+
+#define _INSIDE_MINIOS
 
 #include <os.h>
 #include <xenbus.h>
diff -r 10d338e5f741 extras/mini-os/sched.c
--- a/extras/mini-os/sched.c    Wed Oct 22 16:47:44 2008 +0100
+++ b/extras/mini-os/sched.c    Thu Oct 23 17:05:44 2008 +0100
@@ -34,6 +34,8 @@
  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
  * DEALINGS IN THE SOFTWARE.
  */
+
+#define _INSIDE_MINIOS
 
 #include <os.h>
 #include <hypervisor.h>
diff -r 10d338e5f741 extras/mini-os/xenbus/xenbus.c
--- a/extras/mini-os/xenbus/xenbus.c    Wed Oct 22 16:47:44 2008 +0100
+++ b/extras/mini-os/xenbus/xenbus.c    Thu Oct 23 17:05:44 2008 +0100
@@ -15,6 +15,9 @@
  *
  ****************************************************************************
  **/
+
+#define _INSIDE_MINIOS
+
 #include <os.h>
 #include <mm.h>
 #include <traps.h>
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
<Prev in Thread] Current Thread [Next in Thread>