diff options
author | Thomas Schwinge <tschwinge@gnu.org> | 2006-07-26 23:04:47 +0000 |
---|---|---|
committer | Thomas Schwinge <tschwinge@gnu.org> | 2009-06-18 00:26:38 +0200 |
commit | 253d524b348018470c53c8f8382f6d367daede24 (patch) | |
tree | 00dfb230e5be6fea4faf1cfa7a9d8a7b0da6c656 /linux/pcmcia-cs/modules/ds.c | |
parent | affb871b497129f7f191cfaf7bd458342b22c05f (diff) |
2006-07-27 Stefan Siegl <stesie@brokenpipe.de>
* linux/pcmcia-cs/clients/xirc2ps_cs.c (busy_loop): Replace the code by
a call to __udelay.
* linux/pcmcia-cs/include/linux/init.h: Adapt to our Linux environment.
* linux/pcmcia-cs/include/linux/slab.h: Use `#include', not
`#include_next'.
* linux/pcmcia-cs/include/pcmcia/mem_op.h: Adapt to our Linux
environment and fix GCC 4.0 complaints.
* linux/pcmcia-cs/include/pcmcia/version.h: Always assume that
CONFIG_PCMCIA is not defined.
* linux/pcmcia-cs/modules/cs.c (init_pcmcia_cs): Don't make it static.
* linux/pcmcia-cs/modules/ds.c: Use some magic to avoid duplicate
definition `io_req_t'.
(ds_open, ds_release, ds_read, ds_write, ds_select, ds_poll, ds_fops):
Hide functions if MACH is defined.
Likewise for the module handling code.
(ds_ioctl): Use plain `memcpy' if MACH is defined.
(init_pcmcia_ds): Don't register charcater devices if MACH is defined.
Include "../glue/ds.c".
* linux/pcmcia-cs/modules/i82365.c (test_irq): Adapt to GNU Mach.
(init_i82365): Don't make it static.
* linux/pcmcia-cs/modules/pci_fixup.c (pci_devices): Don't define if
MACH is defined.
* linux/pcmcia-cs/wireless/orinoco.c: Adapt to our Linux environment.
Diffstat (limited to 'linux/pcmcia-cs/modules/ds.c')
-rw-r--r-- | linux/pcmcia-cs/modules/ds.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/linux/pcmcia-cs/modules/ds.c b/linux/pcmcia-cs/modules/ds.c index b6eb10e..e4579ea 100644 --- a/linux/pcmcia-cs/modules/ds.c +++ b/linux/pcmcia-cs/modules/ds.c @@ -48,12 +48,19 @@ #include <linux/poll.h> #endif +/* + * <pcmcia/cs.h> defines io_req_t which is not used in this file, but + * which clashes with the io_req_t needed for the Mach devices. Rename + * it to cardservice_io_req_t to avoid this clash. + */ +#define io_req_t cardservice_io_req_t #include <pcmcia/version.h> #include <pcmcia/cs_types.h> #include <pcmcia/cs.h> #include <pcmcia/bulkmem.h> #include <pcmcia/cistpl.h> #include <pcmcia/ds.h> +#undef io_req_t /*====================================================================*/ @@ -516,6 +523,9 @@ static int unbind_request(int i, bind_info_t *bind_info) ======================================================================*/ +/* Disable all the ds filesystem operations. */ +#ifndef MACH + static int ds_open(struct inode *inode, struct file *file) { socket_t i = MINOR(inode->i_rdev); @@ -699,6 +709,8 @@ static u_int ds_poll(struct file *file, poll_table *wait) /*====================================================================*/ +#endif /* !defined(MACH) */ + static int ds_ioctl(struct inode * inode, struct file * file, u_int cmd, u_long arg) { @@ -721,6 +733,7 @@ static int ds_ioctl(struct inode * inode, struct file * file, if (!(cmd & IOC_OUT) && !capable(CAP_SYS_ADMIN)) return -EPERM; +#ifndef MACH if (cmd & IOC_IN) { err = verify_area(VERIFY_READ, (char *)arg, size); if (err) { @@ -735,10 +748,15 @@ static int ds_ioctl(struct inode * inode, struct file * file, return err; } } +#endif err = ret = 0; +#ifndef MACH if (cmd & IOC_IN) copy_from_user((char *)&buf, (char *)arg, size); +#else + if (cmd & IOC_IN) memcpy((char *) &buf, (char *) arg, size); +#endif switch (cmd) { case DS_ADJUST_RESOURCE_INFO: @@ -857,13 +875,19 @@ static int ds_ioctl(struct inode * inode, struct file * file, } } +#ifndef MACH if (cmd & IOC_OUT) copy_to_user((char *)arg, (char *)&buf, size); +#else + if (cmd & IOC_OUT) memcpy((char *) arg, (char *) &buf, size); +#endif return err; } /* ds_ioctl */ /*====================================================================*/ +#ifndef MACH + static struct file_operations ds_fops = { open: ds_open, release: ds_release, @@ -896,6 +920,8 @@ EXPORT_SYMBOL(unregister_pccard_driver); #endif +#endif /* !defined(MACH) */ + /*====================================================================*/ int __init init_pcmcia_ds(void) @@ -961,6 +987,7 @@ int __init init_pcmcia_ds(void) } } +#ifndef MACH /* Set up character device for user mode clients */ i = register_chrdev(0, "pcmcia", &ds_fops); if (i == -EBUSY) @@ -969,6 +996,7 @@ int __init init_pcmcia_ds(void) else major_dev = i; register_symtab(&ds_symtab); +#endif #ifdef HAS_PROC_BUS if (proc_pccard) @@ -1002,3 +1030,10 @@ void __exit cleanup_module(void) } #endif + +/*====================================================================*/ + +/* Include the interface glue code to GNU Mach. */ +#include "../glue/ds.c" + +/*====================================================================*/ |