All of lore.kernel.org
 help / color / mirror / Atom feed
* [Xenomai-core] rtdm over x86_64
@ 2007-02-03 13:13 Paul
  2007-02-03 15:08 ` Jan Kiszka
  0 siblings, 1 reply; 6+ messages in thread
From: Paul @ 2007-02-03 13:13 UTC (permalink / raw)
  To: xenomai-core

[-- Attachment #1: Type: text/plain, Size: 338 bytes --]


Hi Jan

 Just a small patch to get the ball rolling with an x86_64 support..

The attached resolves a compile time warning of: 

kernel/xenomai/skins/rtdm/core.c: In function ‘_rtdm_ioctl’:
kernel/xenomai/skins/rtdm/core.c:408: warning: comparison is always false due 
to limited range of data type


Regards, Paul.



[-- Attachment #2: rtdm_skin.patch --]
[-- Type: text/x-diff, Size: 1244 bytes --]

Index: include/rtdm/rtdm.h
===================================================================
--- include/rtdm/rtdm.h	(revision 2105)
+++ include/rtdm/rtdm.h	(working copy)
@@ -248,7 +248,7 @@ int     _rtdm_open   (rtdm_user_info_t *
 int     _rtdm_socket (rtdm_user_info_t *user_info, int protocol_family,
                       int socket_type, int protocol);
 int     _rtdm_close  (rtdm_user_info_t *user_info, int fd, int forced);
-int     _rtdm_ioctl  (rtdm_user_info_t *user_info, int fd, int request, ...);
+int     _rtdm_ioctl  (rtdm_user_info_t *user_info, int fd, unsigned int request, ...);
 ssize_t _rtdm_read   (rtdm_user_info_t *user_info, int fd, void *buf,
                       size_t nbyte);
 ssize_t _rtdm_write  (rtdm_user_info_t *user_info, int fd, const void *buf,
Index: ksrc/skins/rtdm/core.c
===================================================================
--- ksrc/skins/rtdm/core.c	(revision 2105)
+++ ksrc/skins/rtdm/core.c	(working copy)
@@ -393,7 +393,7 @@ do {                                    
 } while (0)
 
 
-int _rtdm_ioctl(rtdm_user_info_t *user_info, int fd, int request, ...)
+int _rtdm_ioctl(rtdm_user_info_t *user_info, int fd, unsigned int request, ...)
 {
     va_list args;
     void    *arg;

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Xenomai-core] rtdm over x86_64
  2007-02-03 13:13 [Xenomai-core] rtdm over x86_64 Paul
@ 2007-02-03 15:08 ` Jan Kiszka
  2007-02-03 15:18   ` Jan Kiszka
                     ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Jan Kiszka @ 2007-02-03 15:08 UTC (permalink / raw)
  To: Paul; +Cc: xenomai-core

[-- Attachment #1: Type: text/plain, Size: 1188 bytes --]

Paul wrote:
> Hi Jan
> 
>  Just a small patch to get the ball rolling with an x86_64 support..
> 
> The attached resolves a compile time warning of: 
> 
> kernel/xenomai/skins/rtdm/core.c: In function ‘_rtdm_ioctl’:
> kernel/xenomai/skins/rtdm/core.c:408: warning: comparison is always false due 
> to limited range of data type
> 

Yeah, when looking at this issue with 64-bit glasses, this urgently
needs fixing (I wonder why ia64 didn't stumble yet?).

Your patch points in the right direction, but it needs a bit fine-tuning
and also has to include the ioctl handlers of drivers. I will work out a
fix and inform you. I'll have to rely on your test lab. :)

But first I need some build environment. A quick shot ended here when
trying to configure a patch and prepared 2.6.19 kernel:

# make ARCH=x86_64 CC="gcc -m64" oldconfig
...
init/Kconfig:572: can't open file "arch/x86_64/xenomai/Kconfig"

Anyone any idea? Is something missing, or is the prepare script broken?

Jan


PS: Once we have in-tree RTDM services and drivers running, are you
interested in a RTnet excursion over x64? I should be able to make this
compile, but for testing...


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 250 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Xenomai-core] rtdm over x86_64
  2007-02-03 15:08 ` Jan Kiszka
@ 2007-02-03 15:18   ` Jan Kiszka
  2007-02-03 15:45   ` Philippe Gerum
  2007-02-03 23:32   ` Paul
  2 siblings, 0 replies; 6+ messages in thread
From: Jan Kiszka @ 2007-02-03 15:18 UTC (permalink / raw)
  To: Philippe Gerum; +Cc: xenomai-core

[-- Attachment #1: Type: text/plain, Size: 397 bytes --]

Jan Kiszka wrote:
> But first I need some build environment. A quick shot ended here when
> trying to configure a patch and prepared 2.6.19 kernel:
> 
> # make ARCH=x86_64 CC="gcc -m64" oldconfig
> ...
> init/Kconfig:572: can't open file "arch/x86_64/xenomai/Kconfig"
> 
> Anyone any idea? Is something missing, or is the prepare script broken?

Obviously a missing commit. Philippe?


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 250 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Xenomai-core] rtdm over x86_64
  2007-02-03 15:08 ` Jan Kiszka
  2007-02-03 15:18   ` Jan Kiszka
@ 2007-02-03 15:45   ` Philippe Gerum
  2007-02-03 17:51     ` Jan Kiszka
  2007-02-03 23:32   ` Paul
  2 siblings, 1 reply; 6+ messages in thread
From: Philippe Gerum @ 2007-02-03 15:45 UTC (permalink / raw)
  To: Jan Kiszka; +Cc: xenomai-core

On Sat, 2007-02-03 at 16:08 +0100, Jan Kiszka wrote:

> But first I need some build environment. A quick shot ended here when
> trying to configure a patch and prepared 2.6.19 kernel:
> 
> # make ARCH=x86_64 CC="gcc -m64" oldconfig
> ...
> init/Kconfig:572: can't open file "arch/x86_64/xenomai/Kconfig"
> 
> Anyone any idea? Is something missing, or is the prepare script broken?

It's a bit early for building the x86_64 stack; you may want to fix the
compilation issues over ppc64 or ia64. I'm working on the missing x86_64
bits (task switching and a few other details) before even starting to
fix the build issues.

-- 
Philippe.




^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Xenomai-core] rtdm over x86_64
  2007-02-03 15:45   ` Philippe Gerum
@ 2007-02-03 17:51     ` Jan Kiszka
  0 siblings, 0 replies; 6+ messages in thread
From: Jan Kiszka @ 2007-02-03 17:51 UTC (permalink / raw)
  To: rpm; +Cc: xenomai-core


[-- Attachment #1.1: Type: text/plain, Size: 1207 bytes --]

Philippe Gerum wrote:
> On Sat, 2007-02-03 at 16:08 +0100, Jan Kiszka wrote:
> 
>> But first I need some build environment. A quick shot ended here when
>> trying to configure a patch and prepared 2.6.19 kernel:
>>
>> # make ARCH=x86_64 CC="gcc -m64" oldconfig
>> ...
>> init/Kconfig:572: can't open file "arch/x86_64/xenomai/Kconfig"
>>
>> Anyone any idea? Is something missing, or is the prepare script broken?
> 
> It's a bit early for building the x86_64 stack; you may want to fix the
> compilation issues over ppc64 or ia64. I'm working on the missing x86_64
> bits (task switching and a few other details) before even starting to
> fix the build issues.
> 

OK, I'm just lacking cross-compilers for other 64-bit archs.

Anyway, here is a first patch for the signedness/width issue of RTDM
IOCTLs. It unfortunately slightly breaks the driver API, but it looks
like it's required for 64-bit support (no IOCTL based on _IOR or _IOWR
should be accepted ATM).

Whoever has a full 64-bit environment is welcome to build and run this
(e.g. using xeno_timerbench). Feedback welcome. Will then commit this
chunk. Meanwhile I'm going to meditate about what to do /wrt 2.3...

Jan

[-- Attachment #1.2: rtdm-ioctl64-fix.patch --]
[-- Type: text/plain, Size: 5364 bytes --]

Index: include/rtdm/rtdm_driver.h
===================================================================
--- include/rtdm/rtdm_driver.h	(Revision 2106)
+++ include/rtdm/rtdm_driver.h	(Arbeitskopie)
@@ -198,7 +198,7 @@ typedef
 typedef
     int     (*rtdm_ioctl_handler_t)  (struct rtdm_dev_context   *context,
                                       rtdm_user_info_t          *user_info,
-                                      int                       request,
+                                      unsigned int              request,
                                       void                      *arg);
 
 /**
Index: ksrc/skins/rtdm/core.c
===================================================================
--- ksrc/skins/rtdm/core.c	(Revision 2106)
+++ ksrc/skins/rtdm/core.c	(Arbeitskopie)
@@ -403,9 +403,9 @@ int _rtdm_ioctl(rtdm_user_info_t *user_i
     arg = va_arg(args, void *);
     va_end(args);
 
-    MAJOR_FUNCTION_WRAPPER_TH(ioctl, request, arg);
+    MAJOR_FUNCTION_WRAPPER_TH(ioctl, (unsigned int)request, arg);
 
-    if (unlikely(ret < 0) && request == RTIOC_DEVICE_INFO) {
+    if (unlikely(ret < 0) && (unsigned int)request == RTIOC_DEVICE_INFO) {
         struct rtdm_device *dev = context->device;
         struct rtdm_device_info dev_info;
 
Index: ksrc/drivers/serial/16550A.c
===================================================================
--- ksrc/drivers/serial/16550A.c	(Revision 2106)
+++ ksrc/drivers/serial/16550A.c	(Arbeitskopie)
@@ -550,7 +550,8 @@ int rt_16550_close(struct rtdm_dev_conte
 
 
 int rt_16550_ioctl(struct rtdm_dev_context *context,
-                   rtdm_user_info_t *user_info, int request, void *arg)
+                   rtdm_user_info_t *user_info,
+                   unsigned int request, void *arg)
 {
     struct rt_16550_context *ctx;
     int                     err = 0;
Index: ksrc/drivers/can/rtcan_raw.c
===================================================================
--- ksrc/drivers/can/rtcan_raw.c	(Revision 2106)
+++ ksrc/drivers/can/rtcan_raw.c	(Arbeitskopie)
@@ -412,7 +412,8 @@ static int rtcan_raw_setsockopt(struct r
 
 
 int rtcan_raw_ioctl(struct rtdm_dev_context *context,
-		    rtdm_user_info_t *user_info, int request, void *arg)
+		    rtdm_user_info_t *user_info,
+		    unsigned int request, void *arg)
 {
     int ret = 0;
 
Index: ksrc/drivers/testing/timerbench.c
===================================================================
--- ksrc/drivers/testing/timerbench.c	(Revision 2106)
+++ ksrc/drivers/testing/timerbench.c	(Arbeitskopie)
@@ -234,7 +234,8 @@ int rt_tmbench_close(struct rtdm_dev_con
 
 
 int rt_tmbench_ioctl_nrt(struct rtdm_dev_context *context,
-                         rtdm_user_info_t *user_info, int request, void *arg)
+                         rtdm_user_info_t *user_info,
+                         unsigned int request, void *arg)
 {
     struct rt_tmbench_context   *ctx;
     int                         err = 0;
@@ -413,7 +414,8 @@ int rt_tmbench_ioctl_nrt(struct rtdm_dev
 
 
 int rt_tmbench_ioctl_rt(struct rtdm_dev_context *context,
-                        rtdm_user_info_t *user_info, int request, void *arg)
+                        rtdm_user_info_t *user_info,
+                        unsigned int request, void *arg)
 {
     struct rt_tmbench_context   *ctx;
     int                         err = 0;
Index: ksrc/drivers/testing/switchtest.c
===================================================================
--- ksrc/drivers/testing/switchtest.c	(Revision 2106)
+++ ksrc/drivers/testing/switchtest.c	(Arbeitskopie)
@@ -389,7 +389,7 @@ static int rtswitch_close(struct rtdm_de
 
 static int rtswitch_ioctl_nrt(struct rtdm_dev_context *context,
                               rtdm_user_info_t *user_info,
-                              int request,
+                              unsigned int request,
                               void *arg)
 {
 	rtswitch_context_t *ctx = (rtswitch_context_t *) context->dev_private;
@@ -492,7 +492,7 @@ static int rtswitch_ioctl_nrt(struct rtd
 
 static int rtswitch_ioctl_rt(struct rtdm_dev_context *context,
                              rtdm_user_info_t *user_info,
-                             int request,
+                             unsigned int request,
                              void *arg)
 {
 	rtswitch_context_t *ctx = (rtswitch_context_t *) context->dev_private;
Index: ksrc/drivers/testing/irqbench.c
===================================================================
--- ksrc/drivers/testing/irqbench.c	(Revision 2106)
+++ ksrc/drivers/testing/irqbench.c	(Arbeitskopie)
@@ -237,8 +237,8 @@ static int rt_irqbench_close(struct rtdm
 }
 
 static int rt_irqbench_ioctl_nrt(struct rtdm_dev_context *context,
-				 rtdm_user_info_t *user_info, int request,
-				 void *arg)
+				 rtdm_user_info_t *user_info,
+				 unsigned int request, void *arg)
 {
 	struct rt_irqbench_context *ctx;
 	struct rttst_irqbench_config config_buf;
@@ -435,8 +435,8 @@ static int rt_irqbench_ioctl_nrt(struct 
 }
 
 static int rt_irqbench_ioctl_rt(struct rtdm_dev_context *context,
-				rtdm_user_info_t *user_info, int request,
-				void *arg)
+				rtdm_user_info_t *user_info,
+				unsigned int request, void *arg)
 {
 	struct rt_irqbench_context *ctx;
 	int err = 0;

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 250 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Xenomai-core] rtdm over x86_64
  2007-02-03 15:08 ` Jan Kiszka
  2007-02-03 15:18   ` Jan Kiszka
  2007-02-03 15:45   ` Philippe Gerum
@ 2007-02-03 23:32   ` Paul
  2 siblings, 0 replies; 6+ messages in thread
From: Paul @ 2007-02-03 23:32 UTC (permalink / raw)
  To: Jan Kiszka; +Cc: xenomai-core

On Saturday 03 February 2007 15:08, Jan Kiszka wrote:
> Yeah, when looking at this issue with 64-bit glasses, this urgently
> needs fixing (I wonder why ia64 didn't stumble yet?).

Perhaps different compiler and/or warning flags ?
 Using gcc-4.1 at the moment..

> init/Kconfig:572: can't open file "arch/x86_64/xenomai/Kconfig"
>
> Anyone any idea? Is something missing, or is the prepare script broken?

I must admit, saw the first of the commits announced on 
http://cia.navi.cx/stats/project/xenomai and butchered a tree to see what 
else was needed.. I'll wait for Philippe to finish his commits before 
preempting him again.

> PS: Once we have in-tree RTDM services and drivers running, are you
> interested in a RTnet excursion over x64? I should be able to make this
> compile, but for testing...

RTnet across a local net and/or a machine in your lab via the internet - Could 
be fun :)
 If you have some ready to run code, I can set aside an afternoon to run some 
tests - Perhaps even set up an ssh session so that you can monitor the 
results.


Regards, Paul.




^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2007-02-03 23:32 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-02-03 13:13 [Xenomai-core] rtdm over x86_64 Paul
2007-02-03 15:08 ` Jan Kiszka
2007-02-03 15:18   ` Jan Kiszka
2007-02-03 15:45   ` Philippe Gerum
2007-02-03 17:51     ` Jan Kiszka
2007-02-03 23:32   ` Paul

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.