Hi Brain,

Alle sabato 28 maggio 2011, Brian May ha scritto:
> As the contributor of the patch being discussed, can I please get
> your opinion on this bug report?

Oh, sorry if it broke something, it was not intended. It part of the 
original patch set done by Samuel, which I trusted (as he is a Hurd 
developer and Debian/Hurd maintainer).

> > I don't know if the GNU hurd folks have an opinion on the "proper"
> > 
> > solution here, but here are a couple of options that I think will 
work:

- do the semi-ugly solution an define VIOC_SYSCALL_PROC differently on 
Hurd (see also [1], "missing _IOT" section, for an explanation of what 
can and cannot be done in ioctl's on Hurd). I attached a new version of 
patch 043_hurd_ioctl.
(to be honest, it would seem kind of weird to declare a void* as 
argument, while ioctl's in that file for devdata eclare explicitly the 
struct; I guess this is something that cannot be changed easily due to 
being already in use)

[1] http://www.gnu.org/s/hurd/hurd/porting/guidelines.html

Sorry again for the breakage, luckly has never been part of a stable 
release.
-- 
Pino Toscano
--- a/lib/kafs/kafs.h
+++ b/lib/kafs/kafs.h
@@ -46,6 +46,9 @@
 #define AFSCALL_SETPAG 21
 
 #ifndef _VICEIOCTL
+#ifdef __GNU__
+#define _IOT_ViceIoctl _IOT(_IOTS(caddr_t), 2, _IOTS(short), 2, 0, 0)
+#endif
 #define _VICEIOCTL(id)  ((unsigned int ) _IOW('V', id, struct ViceIoctl))
 #define _AFSCIOCTL(id)  ((unsigned int ) _IOW('C', id, struct ViceIoctl))
 #endif /* _VICEIOCTL */
--- a/lib/kafs/afssys.c
+++ b/lib/kafs/afssys.c
@@ -40,7 +40,12 @@ struct procdata {
     unsigned long param1;
     unsigned long syscall;
 };
+#ifdef __GNU__
+#define _IOT_procdata _IOT(_IOTS(long), 5, 0, 0, 0, 0)
+#define VIOC_SYSCALL_PROC _IOW('C', 1, struct procdata)
+#else
 #define VIOC_SYSCALL_PROC _IOW('C', 1, void *)
+#endif
 
 struct devdata {
     unsigned long syscall;
@@ -52,6 +57,9 @@ struct devdata {
     unsigned long param6;
     unsigned long retval;
 };
+#ifdef __GNU__
+#define _IOT_devdata _IOT(_IOTS(long), 8, 0, 0, 0, 0)
+#endif
 #ifdef _IOWR
 #define VIOC_SYSCALL_DEV _IOWR('C', 2, struct devdata)
 #define VIOC_SYSCALL_DEV_OPENAFS _IOWR('C', 1, struct devdata)

Attachment: signature.asc
Description: This is a digitally signed message part.

Reply via email to