Modified support for 32/64 bit environments, control struct fields have fixed size now.

git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@27 53a565d1-3bb7-0310-b661-cf11e63c67ab
This commit is contained in:
aeb 2000-06-02 17:03:00 +00:00
parent 8942a29ac1
commit 3b8b4c0ae9
7 changed files with 28 additions and 43 deletions

2
NEWS
View File

@ -1,6 +1,8 @@
Version 0.7: Version 0.7:
- added support for environments where the kernel runs in 64 bit mode whereas
user space runs in 32 bit mode
- fixed lock transaction to actually return the required response; these - fixed lock transaction to actually return the required response; these
functions are actually useful now, prototypes for raw1394_start_lock and functions are actually useful now, prototypes for raw1394_start_lock and
raw1394_lock changed raw1394_lock changed

View File

@ -4,20 +4,7 @@ AC_INIT(Makefile.am)
AM_INIT_AUTOMAKE(libraw1394, 0.6) AM_INIT_AUTOMAKE(libraw1394, 0.6)
AM_CONFIG_HEADER(config.h) AM_CONFIG_HEADER(config.h)
# AC_CANONICAL_HOST
AC_PROG_CC AC_PROG_CC
AM_PROG_LIBTOOL AM_PROG_LIBTOOL
AC_ARG_ENABLE(32-64,
[ --enable-32-64 support systems with 64 bit kernel and 32 bit userland],
[
case $enableval in
yes) AC_DEFINE(KERNEL64_USER32) ;;
no) ;;
*) AC_MSG_ERROR([ Invalid arg for --enable-32-64 ])
esac
])
AC_OUTPUT([ Makefile src/Makefile debian/Makefile ]) AC_OUTPUT([ Makefile src/Makefile debian/Makefile ])

View File

@ -18,8 +18,8 @@ static int do_fcp_listen(struct raw1394_handle *handle, int startstop)
req->type = RAW1394_REQ_FCP_LISTEN; req->type = RAW1394_REQ_FCP_LISTEN;
req->generation = handle->generation; req->generation = handle->generation;
req->misc = startstop; req->misc = startstop;
req->tag = (unsigned long)&rh; req->tag = (__u64)&rh;
req->recvb = (kptr_t)handle->buffer; req->recvb = (__u64)handle->buffer;
req->length = 512; req->length = 512;
err = write(handle->fd, req, sizeof(*req)); err = write(handle->fd, req, sizeof(*req));

View File

@ -19,8 +19,8 @@ static int do_iso_listen(struct raw1394_handle *handle, int channel)
req->type = RAW1394_REQ_ISO_LISTEN; req->type = RAW1394_REQ_ISO_LISTEN;
req->generation = handle->generation; req->generation = handle->generation;
req->misc = channel; req->misc = channel;
req->tag = (unsigned long)&rh; req->tag = (__u64)&rh;
req->recvb = (kptr_t)handle->buffer; req->recvb = (__u64)handle->buffer;
req->length = HBUF_SIZE; req->length = HBUF_SIZE;
err = write(handle->fd, req, sizeof(*req)); err = write(handle->fd, req, sizeof(*req));

View File

@ -1,11 +1,10 @@
#ifndef IEEE1394_RAW1394_H #ifndef IEEE1394_RAW1394_H
#define IEEE1394_RAW1394_H #define IEEE1394_RAW1394_H
#define RAW1394_DEVICE_MAJOR 171 #define RAW1394_DEVICE_MAJOR 171
#define RAW1394_DEVICE_NAME "raw1394" #define RAW1394_DEVICE_NAME "raw1394"
#define RAW1394_KERNELAPI_VERSION 2 #define RAW1394_KERNELAPI_VERSION 3
/* state: opened */ /* state: opened */
#define RAW1394_REQ_INITIALIZE 1 #define RAW1394_REQ_INITIALIZE 1
@ -45,30 +44,27 @@
#define RAW1394_ERROR_TIMEOUT (-1102) #define RAW1394_ERROR_TIMEOUT (-1102)
#include <asm/types.h>
struct raw1394_request { struct raw1394_request {
int type; __s16 type;
int error; __s16 error;
int misc; __u32 misc;
unsigned int generation; __u32 generation;
octlet_t address; __u32 length;
unsigned long tag; __u64 address;
size_t length; __u64 tag;
#ifdef __KERNEL__ __u64 sendb;
quadlet_t *sendb; __u64 recvb;
quadlet_t *recvb;
#else
kptr_t sendb;
kptr_t recvb;
#endif
}; };
struct raw1394_khost_list { struct raw1394_khost_list {
int nodes; __u32 nodes;
char name[32]; __u8 name[32];
}; };
#ifdef __KERNEL__ #ifdef __KERNEL__

View File

@ -135,7 +135,7 @@ int raw1394_get_port_info(struct raw1394_handle *handle,
CLEAR_REQ(req); CLEAR_REQ(req);
req->type = RAW1394_REQ_LIST_CARDS; req->type = RAW1394_REQ_LIST_CARDS;
req->generation = handle->generation; req->generation = handle->generation;
req->recvb = (kptr_t)handle->buffer; req->recvb = (__u64)handle->buffer;
req->length = HBUF_SIZE; req->length = HBUF_SIZE;
while (1) { while (1) {

View File

@ -20,9 +20,9 @@ int raw1394_start_read(struct raw1394_handle *handle, nodeid_t node,
req->generation = handle->generation; req->generation = handle->generation;
req->tag = tag; req->tag = tag;
req->address = ((u_int64_t)node << 48) | addr; req->address = ((__u64)node << 48) | addr;
req->length = length; req->length = length;
req->recvb = (kptr_t)buffer; req->recvb = (__u64)buffer;
return (int)write(handle->fd, req, sizeof(*req)); return (int)write(handle->fd, req, sizeof(*req));
} }
@ -39,9 +39,9 @@ int raw1394_start_write(struct raw1394_handle *handle, nodeid_t node,
req->generation = handle->generation; req->generation = handle->generation;
req->tag = tag; req->tag = tag;
req->address = ((u_int64_t)node << 48) | addr; req->address = ((__u64)node << 48) | addr;
req->length = length; req->length = length;
req->sendb = (kptr_t)data; req->sendb = (__u64)data;
return (int)write(handle->fd, req, sizeof(*req)); return (int)write(handle->fd, req, sizeof(*req));
} }
@ -64,9 +64,9 @@ int raw1394_start_lock(struct raw1394_handle *handle, nodeid_t node,
req->generation = handle->generation; req->generation = handle->generation;
req->tag = tag; req->tag = tag;
req->address = ((u_int64_t)node << 48) | addr; req->address = ((__u64)node << 48) | addr;
req->sendb = (kptr_t)sendbuf; req->sendb = (__u64)sendbuf;
req->recvb = (kptr_t)result; req->recvb = (__u64)result;
req->misc = extcode; req->misc = extcode;
switch (extcode) { switch (extcode) {