Applied, thanks! Flavio Cruz, le mar. 20 déc. 2022 20:01:02 -0500, a ecrit: > Most of the changes include defining and using proper function type > declarations (with argument types declared) and avoiding using the > K&R style of function declarations. > --- > Makefile.am | 2 +- > chips/busses.h | 6 ++--- > device/blkio.c | 44 ----------------------------------- > device/buf.h | 6 ----- > device/conf.h | 12 ++++++---- > device/dev_hdr.h | 4 +++- > device/dev_lookup.c | 12 ++++------ > device/dev_name.c | 9 ++++++-- > device/net_io.c | 2 +- > device/net_io.h | 4 +++- > gensym.awk | 2 +- > i386/i386/ipl.h | 4 +++- > i386/i386/pcb.c | 2 +- > i386/i386/pcb.h | 2 +- > i386/i386at/com.c | 2 +- > i386/i386at/conf.c | 48 +++++++++++++++++++-------------------- > i386/i386at/ioapic.c | 6 ++--- > i386/i386at/kd.c | 41 ++++++++++++++------------------- > i386/i386at/kd_mouse.c | 2 +- > i386/i386at/kdsoft.h | 13 +++++------ > include/mach/error.h | 2 -- > include/mach/mig_errors.h | 2 +- > ipc/ipc_mqueue.c | 4 ++-- > ipc/ipc_mqueue.h | 2 +- > ipc/mach_msg.c | 10 ++++---- > kern/exception.c | 5 ++-- > kern/ipc_mig.c | 5 +--- > kern/syscall_sw.h | 8 ++++--- > vm/memory_object.c | 6 ++--- > vm/vm_debug.c | 6 ++--- > vm/vm_fault.c | 18 +++++++-------- > vm/vm_fault.h | 7 ++++-- > vm/vm_kern.c | 2 +- > vm/vm_map.c | 14 +++++------- > vm/vm_map.h | 14 ++++++++---- > vm/vm_user.c | 11 ++++----- > 36 files changed, 144 insertions(+), 195 deletions(-) > > diff --git a/Makefile.am b/Makefile.am > index 8870c7ac..7abe37b5 100644 > --- a/Makefile.am > +++ b/Makefile.am > @@ -61,7 +61,7 @@ AM_CCASFLAGS += \ > # Yes, this makes the eyes hurt. But perhaps someone will finally take care > of > # all that scruffy Mach code... Also see > <http://savannah.gnu.org/task/?5726>. > AM_CFLAGS += \ > - -Wall > + -Wall -Wstrict-prototypes > > # We need the GNU-style inline > AM_CFLAGS += \ > diff --git a/chips/busses.h b/chips/busses.h > index f728add0..90eebc67 100644 > --- a/chips/busses.h > +++ b/chips/busses.h > @@ -73,7 +73,7 @@ struct bus_ctlr { > struct bus_driver *driver; /* myself, as a device */ > char *name; /* readability */ > int unit; /* index in driver */ > - void (*intr)(); /* interrupt handler(s) */ > + void (*intr)(int); /* interrupt handler(s) */ > vm_offset_t address; /* device virtual address */ > int am; /* address modifier */ > vm_offset_t phys_address;/* device phys address */ > @@ -93,7 +93,7 @@ struct bus_device { > struct bus_driver *driver; /* autoconf info */ > char *name; /* my name */ > int unit; > - void (*intr)(); > + void (*intr)(int); > vm_offset_t address; /* device address */ > int am; /* address modifier */ > vm_offset_t phys_address;/* device phys address */ > @@ -131,7 +131,7 @@ struct bus_driver { > vm_offset_t); > void (*attach)( /* setup driver after probe */ > struct bus_device *); > - int (*dgo)(); /* start transfer */ > + int (*dgo)(struct bus_device *); /* start transfer */ > vm_offset_t *addr; /* device csr addresses */ > char *dname; /* name of a device */ > struct bus_device **dinfo; /* backpointers to init structs */ > diff --git a/device/blkio.c b/device/blkio.c > index 7ec1f2cf..62fc6295 100644 > --- a/device/blkio.c > +++ b/device/blkio.c > @@ -37,50 +37,6 @@ > #include <device/ds_routines.h> > > > - > -io_return_t block_io( > - void (*strat)(), > - void (*max_count)(), > - io_req_t ior) > -{ > - kern_return_t rc; > - boolean_t wait = FALSE; > - > - /* > - * Make sure the size is not too large by letting max_count > - * change io_count. If we are doing a write, then io_alloc_size > - * preserves the original io_count. > - */ > - (*max_count)(ior); > - > - /* > - * If reading, allocate memory. If writing, wire > - * down the incoming memory. > - */ > - if (ior->io_op & IO_READ) > - rc = device_read_alloc(ior, (vm_size_t)ior->io_count); > - else > - rc = device_write_get(ior, &wait); > - > - if (rc != KERN_SUCCESS) > - return (rc); > - > - /* > - * Queue the operation for the device. > - */ > - (*strat)(ior); > - > - /* > - * The io is now queued. Wait for it if needed. > - */ > - if (wait) { > - iowait(ior); > - return(D_SUCCESS); > - } > - > - return (D_IO_QUEUED); > -} > - > /* > * 'standard' max_count routine. VM continuations mean that this > * code can cope with arbitrarily-sized write operations (they won't be > diff --git a/device/buf.h b/device/buf.h > index a79ed8e4..7c8a4362 100644 > --- a/device/buf.h > +++ b/device/buf.h > @@ -82,12 +82,6 @@ > > #define B_MD1 IO_SPARE_START > > -/* > - * Redefine physio routine > - */ > -#define physio(strat, xbuf, dev, ops, minphys, ior) \ > - block_io(strat, minphys, ior) > - > /* > * Export standard minphys routine. > */ > diff --git a/device/conf.h b/device/conf.h > index 1af00285..8177966b 100644 > --- a/device/conf.h > +++ b/device/conf.h > @@ -36,6 +36,7 @@ > #include <mach/port.h> > #include <mach/vm_prot.h> > #include <device/device_types.h> > +#include <device/net_status.h> > > struct io_req; > typedef struct io_req *io_req_t; > @@ -54,20 +55,20 @@ struct dev_ops { > int (*d_getstat)(dev_t, dev_flavor_t, dev_status_t, > mach_msg_type_number_t *); /* get status/control */ > int (*d_setstat)(dev_t, dev_flavor_t, dev_status_t, > mach_msg_type_number_t); /* set status/control */ > vm_offset_t (*d_mmap)(dev_t, vm_offset_t, vm_prot_t); /* map > memory */ > - int (*d_async_in)(); /* asynchronous input > setup */ > - int (*d_reset)(); /* reset device */ > + int (*d_async_in)(dev_t, const ipc_port_t, int, filter_t*, > unsigned int); /* asynchronous input setup */ > + int (*d_reset)(dev_t); /* reset device */ > int (*d_port_death)(dev_t, mach_port_t); > /* clean up reply ports */ > int d_subdev; /* number of sub-devices per > unit */ > - int (*d_dev_info)(); /* driver info for kernel */ > + int (*d_dev_info)(dev_t, int, int*); /* driver info for > kernel */ > }; > typedef struct dev_ops *dev_ops_t; > > /* > * Routines for null entries. > */ > -extern int nulldev(void); /* no operation - OK */ > +extern int nulldev_reset(dev_t dev); > extern int nulldev_open(dev_t dev, int flag, io_req_t ior); > extern void nulldev_close(dev_t dev, int flags); > extern int nulldev_read(dev_t dev, io_req_t ior); > @@ -75,7 +76,8 @@ extern int nulldev_write(dev_t dev, io_req_t ior); > extern io_return_t nulldev_getstat(dev_t dev, dev_flavor_t flavor, > dev_status_t data, mach_msg_type_number_t *count); > extern io_return_t nulldev_setstat(dev_t dev, dev_flavor_t flavor, > dev_status_t data, mach_msg_type_number_t count); > extern io_return_t nulldev_portdeath(dev_t dev, mach_port_t port); > -extern int nodev(void); /* no operation - error */ > +extern int nodev_async_in(dev_t, const ipc_port_t, int, filter_t*, unsigned > int); /* no operation - error */ > +extern int nodev_info(dev_t, int, int*); /* no operation - error */ > extern vm_offset_t nomap(dev_t dev, vm_offset_t off, int prot); > /* no operation - error */ > > /* > diff --git a/device/dev_hdr.h b/device/dev_hdr.h > index 4bd12c1c..56e0d825 100644 > --- a/device/dev_hdr.h > +++ b/device/dev_hdr.h > @@ -119,10 +119,12 @@ device_t dev_port_lookup(ipc_port_t); > void dev_port_enter(mach_device_t); > void dev_port_remove(mach_device_t); > > +typedef boolean_t (*dev_map_fn)(mach_device_t, mach_port_t); > + > /* > * To call a routine on each device > */ > -boolean_t dev_map(boolean_t (*)(), mach_port_t); > +boolean_t dev_map(dev_map_fn, mach_port_t); > > /* > * To lock and unlock state and open-count > diff --git a/device/dev_lookup.c b/device/dev_lookup.c > index 9af7508c..e9d38925 100644 > --- a/device/dev_lookup.c > +++ b/device/dev_lookup.c > @@ -70,8 +70,7 @@ struct kmem_cache dev_hdr_cache; > * The number table lock must be held. > */ > void > -dev_number_enter(device) > - const mach_device_t device; > +dev_number_enter(const mach_device_t device) > { > queue_t q; > > @@ -84,8 +83,7 @@ dev_number_enter(device) > * The device-number table lock must be held. > */ > void > -dev_number_remove(device) > - const mach_device_t device; > +dev_number_remove(const mach_device_t device) > { > queue_t q; > > @@ -98,9 +96,7 @@ dev_number_remove(device) > * The number table lock must be held. > */ > mach_device_t > -dev_number_lookup(ops, devnum) > - const dev_ops_t ops; > - int devnum; > +dev_number_lookup(const dev_ops_t ops, int devnum) > { > queue_t q; > mach_device_t device; > @@ -316,7 +312,7 @@ convert_device_to_port(device) > */ > boolean_t > dev_map( > - boolean_t (*routine)(), > + dev_map_fn routine, > mach_port_t port) > { > int i; > diff --git a/device/dev_name.c b/device/dev_name.c > index 59ea961b..13ff6dc9 100644 > --- a/device/dev_name.c > +++ b/device/dev_name.c > @@ -39,7 +39,7 @@ > /* > * Routines placed in empty entries in the device tables > */ > -int nulldev(void) > +int nulldev_reset(dev_t) > { > return (D_SUCCESS); > } > @@ -78,7 +78,12 @@ int nulldev_portdeath(dev_t dev, mach_port_t port) > return (D_SUCCESS); > } > > -int nodev(void) > +int nodev_async_in(dev_t, const ipc_port_t, int, filter_t*, unsigned int) > +{ > + return (D_INVALID_OPERATION); > +} > + > +int nodev_info(dev_t, int, int*) > { > return (D_INVALID_OPERATION); > } > diff --git a/device/net_io.c b/device/net_io.c > index 72b040a0..338b433c 100644 > --- a/device/net_io.c > +++ b/device/net_io.c > @@ -1437,7 +1437,7 @@ printf ("net_getstat: count: %d, addr_int_count: %d\n", > io_return_t > net_write( > struct ifnet *ifp, > - int (*start)(), > + net_write_start_device_fn start, > io_req_t ior) > { > spl_t s; > diff --git a/device/net_io.h b/device/net_io.h > index 9468e34b..c9af85ee 100644 > --- a/device/net_io.h > +++ b/device/net_io.h > @@ -79,7 +79,9 @@ extern void net_packet(struct ifnet *, ipc_kmsg_t, unsigned > int, boolean_t); > extern void net_filter(ipc_kmsg_t, ipc_kmsg_queue_t); > extern io_return_t net_getstat(struct ifnet *, dev_flavor_t, dev_status_t, > mach_msg_type_number_t *); > -extern io_return_t net_write(struct ifnet *, int (*)(), io_req_t); > + > +typedef int (*net_write_start_device_fn)(short); > +extern io_return_t net_write(struct ifnet *, net_write_start_device_fn, > io_req_t); > > /* > * Non-interrupt code may allocate and free net_kmsgs with these functions. > diff --git a/gensym.awk b/gensym.awk > index f5eabae5..63c2f440 100644 > --- a/gensym.awk > +++ b/gensym.awk > @@ -27,7 +27,7 @@ BEGIN { > /^[a-z]/ { > if (bogus_printed == "no") > { > - print "void bogus() {"; > + print "void bogus(void) {"; > bogus_printed = "yes"; > } > } > diff --git a/i386/i386/ipl.h b/i386/i386/ipl.h > index fb939789..20e7428b 100644 > --- a/i386/i386/ipl.h > +++ b/i386/i386/ipl.h > @@ -72,7 +72,9 @@ WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. > #ifdef KERNEL > #ifndef __ASSEMBLER__ > #include <machine/machspl.h> > -extern void (*ivect[])(); > +/* Note that interrupts have varying signatures */ > +typedef void (*interrupt_handler_fn)(int); > +extern interrupt_handler_fn ivect[]; > extern int iunit[]; > extern spl_t curr_ipl; > #endif /* __ASSEMBLER__ */ > diff --git a/i386/i386/pcb.c b/i386/i386/pcb.c > index 5ac487b7..ef300537 100644 > --- a/i386/i386/pcb.c > +++ b/i386/i386/pcb.c > @@ -332,7 +332,7 @@ void load_context(thread_t new) > */ > thread_t switch_context( > thread_t old, > - void (*continuation)(), > + continuation_t continuation, > thread_t new) > { > /* > diff --git a/i386/i386/pcb.h b/i386/i386/pcb.h > index 5bc78066..4d48b9f7 100644 > --- a/i386/i386/pcb.h > +++ b/i386/i386/pcb.h > @@ -77,7 +77,7 @@ extern void update_ktss_iopb (unsigned char *new_iopb, > io_port_t size); > > extern thread_t Load_context (thread_t new); > > -extern thread_t Switch_context (thread_t old, void (*continuation)(), > thread_t new); > +extern thread_t Switch_context (thread_t old, continuation_t continuation, > thread_t new); > > extern void switch_to_shutdown_context(thread_t thread, > void (*routine)(processor_t), > diff --git a/i386/i386at/com.c b/i386/i386at/com.c > index 8bd80206..c63c30a4 100644 > --- a/i386/i386at/com.c > +++ b/i386/i386at/com.c > @@ -49,7 +49,7 @@ > > #include <device/cons.h> > > -static void comparam(); > +static void comparam(int); > > static vm_offset_t com_std[NCOM] = { 0 }; > struct bus_device *cominfo[NCOM]; > diff --git a/i386/i386at/conf.c b/i386/i386at/conf.c > index ca5d0dfb..ecbf1e45 100644 > --- a/i386/i386at/conf.c > +++ b/i386/i386at/conf.c > @@ -86,76 +86,76 @@ struct dev_ops dev_name_list[] = > indirect list */ > { "cn", nulldev_open, nulldev_close, nulldev_read, > nulldev_write, nulldev_getstat, nulldev_setstat, > nomap, > - nodev, nulldev, nulldev_portdeath, 0, > - nodev }, > + nodev_async_in, nulldev_reset, nulldev_portdeath, 0, > + nodev_info}, > > #ifndef MACH_HYP > #if ENABLE_IMMEDIATE_CONSOLE > { "immc", nulldev_open, nulldev_close, nulldev_read, > nulldev_write, nulldev_getstat, nulldev_setstat, > - nomap, nodev, nulldev, nulldev_portdeath, 0, > - nodev }, > + nomap, nodev_async_in, nulldev_reset, nulldev_portdeath, > 0, > + nodev_info }, > #endif /* ENABLE_IMMEDIATE_CONSOLE */ > { kdname, kdopen, kdclose, kdread, > kdwrite, kdgetstat, kdsetstat, kdmmap, > - nodev, nulldev, kdportdeath, 0, > - nodev }, > + nodev_async_in, nulldev_reset, kdportdeath, 0, > + nodev_info }, > #endif /* MACH_HYP */ > > { timename, timeopen, timeclose, nulldev_read, > nulldev_write, nulldev_getstat, nulldev_setstat, > timemmap, > - nodev, nulldev, nulldev_portdeath, 0, > - nodev }, > + nodev_async_in, nulldev_reset, nulldev_portdeath, 0, > + nodev_info }, > > #ifndef MACH_HYP > #if NCOM > 0 > { comname, comopen, comclose, comread, > comwrite, comgetstat, comsetstat, nomap, > - nodev, nulldev, comportdeath, 0, > - nodev }, > + nodev_async_in, nulldev_reset, comportdeath, 0, > + nodev_info }, > #endif > > #ifdef MACH_LPR > { lprname, lpropen, lprclose, lprread, > lprwrite, lprgetstat, lprsetstat, nomap, > - nodev, nulldev, lprportdeath, 0, > - nodev }, > + nodev_async_in, nulldev_reset, lprportdeath, 0, > + nodev_info }, > #endif > > { mousename, mouseopen, mouseclose, mouseread, > nulldev_write, mousegetstat, nulldev_setstat, nomap, > - nodev, nulldev, nulldev_portdeath, 0, > - nodev }, > + nodev_async_in, nulldev_reset, nulldev_portdeath, 0, > + nodev_info }, > > { kbdname, kbdopen, kbdclose, kbdread, > nulldev_write, kbdgetstat, kbdsetstat, nomap, > - nodev, nulldev, nulldev_portdeath, 0, > - nodev }, > + nodev_async_in, nulldev_reset, nulldev_portdeath, 0, > + nodev_info }, > > { memname, nulldev_open, nulldev_close, nulldev_read, > nulldev_write, nulldev_getstat, nulldev_setstat, > memmmap, > - nodev, nulldev, nulldev_portdeath, 0, > - nodev }, > + nodev_async_in, nulldev_reset, nulldev_portdeath, 0, > + nodev_info }, > #endif /* MACH_HYP */ > > #ifdef MACH_KMSG > { kmsgname, kmsgopen, kmsgclose, kmsgread, > nulldev_write, kmsggetstat, nulldev_setstat, > nomap, > - nodev, nulldev, nulldev_portdeath, 0, > - nodev }, > + nodev_async_in, nulldev_reset, nulldev_portdeath, > 0, > + nodev_info }, > #endif > > #ifdef MACH_HYP > { hypcnname, hypcnopen, hypcnclose, hypcnread, > hypcnwrite, hypcngetstat, hypcnsetstat, nomap, > - nodev, nulldev, hypcnportdeath, 0, > - nodev }, > + nodev_async_in, nulldev_reset, hypcnportdeath, 0, > + nodev_info }, > #endif /* MACH_HYP */ > > { irqname, nulldev_open, nulldev_close, nulldev_read, > nulldev_write,nulldev_getstat,nulldev_setstat, nomap, > - nodev, nulldev, nulldev_portdeath,0, > - nodev }, > + nodev_async_in, nulldev_reset, nulldev_portdeath,0, > + nodev_info }, > > }; > int dev_name_count = sizeof(dev_name_list)/sizeof(dev_name_list[0]); > diff --git a/i386/i386at/ioapic.c b/i386/i386at/ioapic.c > index e5523488..3373aa71 100644 > --- a/i386/i386at/ioapic.c > +++ b/i386/i386at/ioapic.c > @@ -43,7 +43,7 @@ spl_t curr_ipl; > int iunit[NINTR] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, > 16, 17, 18, 19, 20, 21, 22, 23}; > > -void (*ivect[NINTR])() = { > +interrupt_handler_fn ivect[NINTR] = { > /* 00 */ intnull, /* install timer later */ > /* 01 */ kdintr, /* kdintr, ... */ > /* 02 */ intnull, > @@ -402,8 +402,8 @@ ioapic_configure(void) > > /* Install clock interrupt handler on both remapped timer pin and pin 0 > * since nobody knows how all x86 timers are wired up */ > - ivect[0] = hardclock; > - ivect[timer_pin] = hardclock; > + ivect[0] = (interrupt_handler_fn)hardclock; > + ivect[timer_pin] = (interrupt_handler_fn)hardclock; > > printf("IOAPIC 0 configured\n"); > } > diff --git a/i386/i386at/kd.c b/i386/i386at/kd.c > index b5501873..5b932889 100644 > --- a/i386/i386at/kd.c > +++ b/i386/i386at/kd.c > @@ -107,20 +107,24 @@ WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. > struct tty kd_tty; > extern boolean_t rebootflag; > > -static void charput(), charmvup(), charmvdown(), charclear(), > charsetcursor(); > +static void charput(csrpos_t pos, char ch, char chattr); > +static void charmvup(csrpos_t from, csrpos_t to, int count); > +static void charmvdown(csrpos_t from, csrpos_t to, int count); > +static void charclear(csrpos_t to, int count, char chattr); > +static void charsetcursor(csrpos_t newpos); > static void kd_noopreset(void); > > /* > * These routines define the interface to the device-specific layer. > * See kdsoft.h for a more complete description of what each routine does. > */ > -void (*kd_dput)() = charput; /* put attributed char */ > -void (*kd_dmvup)() = charmvup; /* block move up */ > -void (*kd_dmvdown)() = charmvdown; /* block move down */ > -void (*kd_dclear)() = charclear; /* block clear */ > -void (*kd_dsetcursor)() = charsetcursor; > +void (*kd_dput)(csrpos_t, char, char) = charput; /* put attributed char > */ > +void (*kd_dmvup)(csrpos_t, csrpos_t, int) = charmvup; /* block move > up */ > +void (*kd_dmvdown)(csrpos_t, csrpos_t, int) = charmvdown; /* block move > down */ > +void (*kd_dclear)(csrpos_t, int, char) = charclear; /* block clear > */ > +void (*kd_dsetcursor)(csrpos_t) = charsetcursor; > /* set cursor position on displayed page */ > -void (*kd_dreset)() = kd_noopreset; /* prepare for reboot */ > +void (*kd_dreset)(void) = kd_noopreset; /* prepare for reboot */ > > /* > * Globals used for both character-based controllers and bitmap-based > @@ -2488,7 +2492,7 @@ int new_button = 0; > void > kd_xga_init(void) > { > - csrpos_t xga_getpos(); > + csrpos_t xga_getpos(void); > unsigned char start, stop; > > #if 0 > @@ -2610,10 +2614,7 @@ xga_getpos(void) > * Put attributed character for EGA/CGA/etc. > */ > static void > -charput(pos, ch, chattr) > -csrpos_t pos; /* where to put it */ > -char ch; /* the character */ > -char chattr; /* its attribute */ > +charput(csrpos_t pos, char ch, char chattr) > { > *(vid_start + pos) = ch; > *(vid_start + pos + 1) = chattr; > @@ -2626,8 +2627,7 @@ char chattr; /* its > attribute */ > * Set hardware cursor position for EGA/CGA/etc. > */ > static void > -charsetcursor(newpos) > -csrpos_t newpos; > +charsetcursor(csrpos_t newpos) > { > short curpos; /* position, not scaled for attribute byte */ > > @@ -2647,9 +2647,7 @@ csrpos_t newpos; > * Block move up for EGA/CGA/etc. > */ > static void > -charmvup(from, to, count) > -csrpos_t from, to; > -int count; > +charmvup(csrpos_t from, csrpos_t to, int count) > { > kd_slmscu(vid_start+from, vid_start+to, count); > } > @@ -2661,9 +2659,7 @@ int count; > * Block move down for EGA/CGA/etc. > */ > static void > -charmvdown(from, to, count) > -csrpos_t from, to; > -int count; > +charmvdown(csrpos_t from, csrpos_t to, int count) > { > kd_slmscd(vid_start+from, vid_start+to, count); > } > @@ -2675,10 +2671,7 @@ int count; > * Fast clear for CGA/EGA/etc. > */ > static void > -charclear(to, count, chattr) > -csrpos_t to; > -int count; > -char chattr; > +charclear(csrpos_t to, int count, char chattr) > { > kd_slmwd(vid_start+to, count, ((unsigned short)chattr<<8)+K_SPACE); > } > diff --git a/i386/i386at/kd_mouse.c b/i386/i386at/kd_mouse.c > index 7dd1c272..3af21273 100644 > --- a/i386/i386at/kd_mouse.c > +++ b/i386/i386at/kd_mouse.c > @@ -82,7 +82,7 @@ WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. > > #include "kd_mouse.h" > > -static void (*oldvect)(); /* old interrupt vector */ > +static interrupt_handler_fn oldvect; /* old interrupt vector */ > static int oldunit; > extern struct bus_device *cominfo[]; > > diff --git a/i386/i386at/kdsoft.h b/i386/i386at/kdsoft.h > index 1dfd2b2c..79bfdb06 100644 > --- a/i386/i386at/kdsoft.h > +++ b/i386/i386at/kdsoft.h > @@ -145,13 +145,12 @@ extern void bmpmvdown(csrpos_t, csrpos_t, int); > extern void bmpclear(csrpos_t, int, char); > extern void bmpsetcursor(csrpos_t); > > -extern void (*kd_dput)(); /* put attributed char */ > -extern void (*kd_dmvup)(); /* block move up */ > -extern void (*kd_dmvdown)(); /* block move down */ > -extern void (*kd_dclear)(); /* block clear */ > -extern void (*kd_dsetcursor)(); > - /* set cursor position on displayed page */ > -extern void (*kd_dreset)(); /* prepare for reboot */ > +extern void (*kd_dput)(csrpos_t, char, char); /* put attributed char > */ > +extern void (*kd_dmvup)(csrpos_t, csrpos_t, int); /* block move up */ > +extern void (*kd_dmvdown)(csrpos_t, csrpos_t, int); /* block move down */ > +extern void (*kd_dclear)(csrpos_t, int, char); /* block clear */ > +extern void (*kd_dsetcursor)(csrpos_t); /* set cursor position > on displayed page */ > +extern void (*kd_dreset)(void); /* prepare for reboot */ > > > /* > diff --git a/include/mach/error.h b/include/mach/error.h > index 72a2d79c..035dcf83 100644 > --- a/include/mach/error.h > +++ b/include/mach/error.h > @@ -44,7 +44,6 @@ > > #define err_none (mach_error_t)0 > #define ERR_SUCCESS (mach_error_t)0 > -#define ERR_ROUTINE_NIL (mach_error_fn_t)0 > > > #define err_system(x) (((x)&0x3f)<<26) > @@ -89,7 +88,6 @@ > > #ifndef __ASSEMBLER__ > typedef kern_return_t mach_error_t; > -typedef mach_error_t (* mach_error_fn_t)(); > #endif /* __ASSEMBLER__ */ > > #endif /* _MACH_ERROR_H_ */ > diff --git a/include/mach/mig_errors.h b/include/mach/mig_errors.h > index 5758ccf3..389ce778 100644 > --- a/include/mach/mig_errors.h > +++ b/include/mach/mig_errors.h > @@ -68,7 +68,7 @@ typedef struct mig_symtab { > #else > int > #endif > - (*ms_routine)(); > + (*ms_routine)(void); > } mig_symtab_t; > > /* > diff --git a/ipc/ipc_mqueue.c b/ipc/ipc_mqueue.c > index a371a625..ac6bed51 100644 > --- a/ipc/ipc_mqueue.c > +++ b/ipc/ipc_mqueue.c > @@ -259,7 +259,7 @@ ipc_mqueue_send( > > ip_unlock(port); > counter(c_ipc_mqueue_send_block++); > - thread_block((void (*)(void)) 0); > + thread_block(thread_no_continuation); > ip_lock(port); > > /* why did we wake up? */ > @@ -520,7 +520,7 @@ ipc_mqueue_receive( > mach_msg_size_t max_size, > mach_msg_timeout_t time_out, > boolean_t resume, > - void (*continuation)(void), > + continuation_t continuation, > ipc_kmsg_t *kmsgp, > mach_port_seqno_t *seqnop) > { > diff --git a/ipc/ipc_mqueue.h b/ipc/ipc_mqueue.h > index efca6817..dfac7456 100644 > --- a/ipc/ipc_mqueue.h > +++ b/ipc/ipc_mqueue.h > @@ -75,7 +75,7 @@ ipc_mqueue_copyin(ipc_space_t, mach_port_name_t, > ipc_mqueue_t *, ipc_object_t *) > extern mach_msg_return_t > ipc_mqueue_receive(ipc_mqueue_t, mach_msg_option_t, > mach_msg_size_t, mach_msg_timeout_t, > - boolean_t, void (*)(), > + boolean_t, continuation_t, > ipc_kmsg_t *, mach_port_seqno_t *); > > /* > diff --git a/ipc/mach_msg.c b/ipc/mach_msg.c > index aa8cdb5b..420e2a26 100644 > --- a/ipc/mach_msg.c > +++ b/ipc/mach_msg.c > @@ -789,7 +789,7 @@ mach_msg_trap( > self->ith_object = rcv_object; > self->ith_mqueue = rcv_mqueue; > > - if ((receiver->swap_func == (void (*)()) mach_msg_continue) && > + if ((receiver->swap_func == mach_msg_continue) && > thread_handoff(self, mach_msg_continue, receiver)) { > assert(current_thread() == receiver); > > @@ -798,7 +798,7 @@ mach_msg_trap( > * because the receiver is using no options. > */ > } else if ((receiver->swap_func == > - (void (*)()) exception_raise_continue) && > + exception_raise_continue) && > thread_handoff(self, mach_msg_continue, receiver)) { > counter(c_mach_msg_trap_block_exc++); > assert(current_thread() == receiver); > @@ -830,7 +830,7 @@ mach_msg_trap( > assert(current_thread() == receiver); > > if ((receiver->swap_func == > - (void (*)()) mach_msg_receive_continue) && > + mach_msg_receive_continue) && > ((receiver->ith_option & MACH_RCV_NOTIFY) == 0)) { > /* > * We can still use the optimized code. > @@ -1669,8 +1669,8 @@ mach_msg_interrupt(thread_t thread) > { > ipc_mqueue_t mqueue; > > - assert((thread->swap_func == (void (*)()) mach_msg_continue) || > - (thread->swap_func == (void (*)()) mach_msg_receive_continue)); > + assert((thread->swap_func == mach_msg_continue) || > + (thread->swap_func == mach_msg_receive_continue)); > > mqueue = thread->ith_mqueue; > imq_lock(mqueue); > diff --git a/kern/exception.c b/kern/exception.c > index 2ff122f2..0d8191a7 100644 > --- a/kern/exception.c > +++ b/kern/exception.c > @@ -449,9 +449,8 @@ exception_raise( > > receiver = ipc_thread_queue_first(&dest_mqueue->imq_threads); > if ((receiver == ITH_NULL) || > - !((receiver->swap_func == (void (*)()) mach_msg_continue) || > - ((receiver->swap_func == > - (void (*)()) mach_msg_receive_continue) && > + !((receiver->swap_func == mach_msg_continue) || > + ((receiver->swap_func == mach_msg_receive_continue) && > (sizeof(struct mach_exception) <= receiver->ith_msize) && > ((receiver->ith_option & MACH_RCV_NOTIFY) == 0))) || > !thread_handoff(self, exception_raise_continue, receiver)) { > diff --git a/kern/ipc_mig.c b/kern/ipc_mig.c > index 7ed12faa..f353009e 100644 > --- a/kern/ipc_mig.c > +++ b/kern/ipc_mig.c > @@ -285,10 +285,7 @@ mig_put_reply_port( > * len - Length of destination buffer. > */ > vm_size_t > -mig_strncpy(dest, src, len) > - char *dest; > - const char *src; > - int len; > +mig_strncpy(char *dest, const char *src, int len) > { > char *dest_ = dest; > int i; > diff --git a/kern/syscall_sw.h b/kern/syscall_sw.h > index 80b1810b..34eaf90b 100644 > --- a/kern/syscall_sw.h > +++ b/kern/syscall_sw.h > @@ -35,9 +35,11 @@ > * Note: this is indexed manually by locore.S! > */ > > +typedef void (*generic_trap_function)(void); > + > typedef struct { > int mach_trap_arg_count; > - int (*mach_trap_function)(); > + generic_trap_function mach_trap_function; > boolean_t mach_trap_stack; > const char *mach_trap_name; > } mach_trap_t; > @@ -46,8 +48,8 @@ extern mach_trap_t mach_trap_table[]; > extern int mach_trap_count; > > #define MACH_TRAP(name, arg_count) \ > - { (arg_count), (int (*)()) (name), FALSE, #name } > + { (arg_count), (generic_trap_function) (name), FALSE, #name } > #define MACH_TRAP_STACK(name, arg_count) \ > - { (arg_count), (int (*)()) (name), TRUE, #name } > + { (arg_count), (generic_trap_function) (name), TRUE, #name } > > #endif /* _KERN_SYSCALL_SW_H_ */ > diff --git a/vm/memory_object.c b/vm/memory_object.c > index ad93f87c..464a036e 100644 > --- a/vm/memory_object.c > +++ b/vm/memory_object.c > @@ -976,9 +976,9 @@ kern_return_t memory_object_get_attributes( > /* > * If successful, consumes the supplied naked send right. > */ > -kern_return_t vm_set_default_memory_manager(host, default_manager) > - const host_t host; > - ipc_port_t *default_manager; > +kern_return_t vm_set_default_memory_manager( > + const host_t host, > + ipc_port_t *default_manager) > { > ipc_port_t current_manager; > ipc_port_t new_manager; > diff --git a/vm/vm_debug.c b/vm/vm_debug.c > index 4b5c1521..3339d0c8 100644 > --- a/vm/vm_debug.c > +++ b/vm/vm_debug.c > @@ -433,10 +433,8 @@ mach_vm_object_pages( > */ > > kern_return_t > -host_virtual_physical_table_info(host, infop, countp) > - const host_t host; > - hash_info_bucket_array_t *infop; > - natural_t *countp; > +host_virtual_physical_table_info(const host_t host, > + hash_info_bucket_array_t *infop, natural_t *countp) > { > vm_offset_t addr; > vm_size_t size = 0;/* '=0' to quiet gcc warnings */ > diff --git a/vm/vm_fault.c b/vm/vm_fault.c > index e1dfb06e..44801911 100644 > --- a/vm/vm_fault.c > +++ b/vm/vm_fault.c > @@ -70,7 +70,7 @@ typedef struct vm_fault_state { > vm_offset_t vmf_vaddr; > vm_prot_t vmf_fault_type; > boolean_t vmf_change_wiring; > - void (*vmf_continuation)(); > + vm_fault_continuation_t vmf_continuation; > vm_map_version_t vmf_version; > boolean_t vmf_wired; > struct vm_object *vmf_object; > @@ -218,7 +218,7 @@ vm_fault_return_t vm_fault_page( > */ > /* More arguments: */ > boolean_t resume, /* We are restarting. */ > - void (*continuation)()) /* Continuation for blocking. */ > + continuation_t continuation) /* Continuation for blocking. */ > { > vm_page_t m; > vm_object_t object; > @@ -347,7 +347,7 @@ vm_fault_return_t vm_fault_page( > > PAGE_ASSERT_WAIT(m, interruptible); > vm_object_unlock(object); > - if (continuation != (void (*)()) 0) { > + if (continuation != thread_no_continuation) { > vm_fault_state_t *state = > (vm_fault_state_t *) > current_thread()->ith_other; > > @@ -1082,7 +1082,7 @@ vm_fault_return_t vm_fault_page( > block_and_backoff: > vm_fault_cleanup(object, first_m); > > - if (continuation != (void (*)()) 0) { > + if (continuation != thread_no_continuation) { > vm_fault_state_t *state = > (vm_fault_state_t *) current_thread()->ith_other; > > @@ -1149,7 +1149,7 @@ kern_return_t vm_fault( > vm_prot_t fault_type, > boolean_t change_wiring, > boolean_t resume, > - void (*continuation)()) > + vm_fault_continuation_t continuation) > { > vm_map_version_t version; /* Map version for > verificiation */ > boolean_t wired; /* Should mapping be wired > down? */ > @@ -1187,7 +1187,7 @@ kern_return_t vm_fault( > goto after_vm_fault_page; > } > > - if (continuation != (void (*)()) 0) { > + if (continuation != vm_fault_no_continuation) { > /* > * We will probably need to save state. > */ > @@ -1239,7 +1239,7 @@ kern_return_t vm_fault( > object->ref_count++; > vm_object_paging_begin(object); > > - if (continuation != (void (*)()) 0) { > + if (continuation != vm_fault_no_continuation) { > vm_fault_state_t *state = > (vm_fault_state_t *) current_thread()->ith_other; > > @@ -1293,7 +1293,7 @@ kern_return_t vm_fault( > kr = KERN_SUCCESS; > goto done; > case VM_FAULT_MEMORY_SHORTAGE: > - if (continuation != (void (*)()) 0) { > + if (continuation != vm_fault_no_continuation) { > vm_fault_state_t *state = > (vm_fault_state_t *) > current_thread()->ith_other; > > @@ -1476,7 +1476,7 @@ kern_return_t vm_fault( > #undef RELEASE_PAGE > > done: > - if (continuation != (void (*)()) 0) { > + if (continuation != vm_fault_no_continuation) { > vm_fault_state_t *state = > (vm_fault_state_t *) current_thread()->ith_other; > > diff --git a/vm/vm_fault.h b/vm/vm_fault.h > index 7fdbc417..ae692b11 100644 > --- a/vm/vm_fault.h > +++ b/vm/vm_fault.h > @@ -49,11 +49,14 @@ typedef kern_return_t vm_fault_return_t; > #define VM_FAULT_FICTITIOUS_SHORTAGE 4 > #define VM_FAULT_MEMORY_ERROR 5 > > +typedef void (*vm_fault_continuation_t)(kern_return_t); > +#define vm_fault_no_continuation ((vm_fault_continuation_t)0) > + > extern void vm_fault_init(void); > extern vm_fault_return_t vm_fault_page(vm_object_t, vm_offset_t, vm_prot_t, > boolean_t, boolean_t, vm_prot_t *, > vm_page_t *, vm_page_t *, boolean_t, > - void (*)()); > + continuation_t); > > extern void vm_fault_cleanup(vm_object_t, vm_page_t); > /* > @@ -61,7 +64,7 @@ extern void vm_fault_cleanup(vm_object_t, > vm_page_t); > */ > > extern kern_return_t vm_fault(vm_map_t, vm_offset_t, vm_prot_t, boolean_t, > - boolean_t, void (*)()); > + boolean_t, vm_fault_continuation_t); > extern void vm_fault_wire(vm_map_t, vm_map_entry_t); > extern void vm_fault_unwire(vm_map_t, vm_map_entry_t); > > diff --git a/vm/vm_kern.c b/vm/vm_kern.c > index c624a875..51223d98 100644 > --- a/vm/vm_kern.c > +++ b/vm/vm_kern.c > @@ -1014,7 +1014,7 @@ kmem_io_map_copyout( > return(ret); > } > copy->cpy_cont = vm_map_copy_discard_cont; > - copy->cpy_cont_args = (char *) new_copy; > + copy->cpy_cont_args = (vm_map_copyin_args_t)new_copy; > copy = new_copy; > page_list = ©->cpy_page_list[0]; > } > diff --git a/vm/vm_map.c b/vm/vm_map.c > index 4200a239..963aa507 100644 > --- a/vm/vm_map.c > +++ b/vm/vm_map.c > @@ -280,8 +280,7 @@ void vm_map_unlock(struct vm_map *map) > #define vm_map_copy_entry_create(copy) \ > _vm_map_entry_create(&(copy)->cpy_hdr) > > -vm_map_entry_t _vm_map_entry_create(map_header) > - const struct vm_map_header *map_header; > +vm_map_entry_t _vm_map_entry_create(const struct vm_map_header *map_header) > { > vm_map_entry_t entry; > > @@ -303,9 +302,8 @@ vm_map_entry_t _vm_map_entry_create(map_header) > #define vm_map_copy_entry_dispose(map, entry) \ > _vm_map_entry_dispose(&(copy)->cpy_hdr, (entry)) > > -void _vm_map_entry_dispose(map_header, entry) > - const struct vm_map_header *map_header; > - vm_map_entry_t entry; > +void _vm_map_entry_dispose(const struct vm_map_header *map_header, > + vm_map_entry_t entry) > { > (void)map_header; > > @@ -3810,7 +3808,7 @@ kern_return_t vm_map_copyin_page_list( > copy->offset = src_addr; > copy->size = len; > copy->cpy_cont = ((kern_return_t (*)()) 0); > - copy->cpy_cont_args = (char *) VM_MAP_COPYIN_ARGS_NULL; > + copy->cpy_cont_args = VM_MAP_COPYIN_ARGS_NULL; > > /* > * Find the beginning of the region. > @@ -3900,7 +3898,7 @@ make_continuation: > } > cont_args->steal_pages = steal_pages; > > - copy->cpy_cont_args = (char *) cont_args; > + copy->cpy_cont_args = cont_args; > copy->cpy_cont = vm_map_copyin_page_list_cont; > > src_end = src_start; > @@ -4239,7 +4237,7 @@ retry: > cont_args->destroy_len = src_end - src_start; > cont_args->steal_pages = FALSE; > > - copy->cpy_cont_args = (char *) cont_args; > + copy->cpy_cont_args = cont_args; > copy->cpy_cont = vm_map_copyin_page_list_cont; > } > > diff --git a/vm/vm_map.h b/vm/vm_map.h > index 57bdf651..3d1c9428 100644 > --- a/vm/vm_map.h > +++ b/vm/vm_map.h > @@ -255,6 +255,10 @@ typedef struct vm_map_version { > > #define VM_MAP_COPY_PAGE_LIST_MAX 64 > > +struct vm_map_copy; > +struct vm_map_copyin_args_data; > +typedef kern_return_t (*vm_map_copy_cont_fn)(struct > vm_map_copyin_args_data*, struct vm_map_copy**); > + > typedef struct vm_map_copy { > int type; > #define VM_MAP_COPY_ENTRY_LIST 1 > @@ -270,8 +274,8 @@ typedef struct vm_map_copy { > struct { /* PAGE_LIST */ > vm_page_t page_list[VM_MAP_COPY_PAGE_LIST_MAX]; > int npages; > - kern_return_t (*cont)(); > - char *cont_args; > + vm_map_copy_cont_fn cont; > + struct vm_map_copyin_args_data* cont_args; > } c_p; > } c_u; > } *vm_map_copy_t; > @@ -323,7 +327,7 @@ MACRO_BEGIN > \ > (*((old_copy)->cpy_cont))((old_copy)->cpy_cont_args, \ > (vm_map_copy_t *) 0); \ > (old_copy)->cpy_cont = (kern_return_t (*)()) 0; \ > - (old_copy)->cpy_cont_args = (char *) 0; \ > + (old_copy)->cpy_cont_args = VM_MAP_COPYIN_ARGS_NULL; \ > MACRO_END > > #define vm_map_copy_has_cont(copy) \ > @@ -333,14 +337,14 @@ MACRO_END > * Continuation structures for vm_map_copyin_page_list. > */ > > -typedef struct { > +typedef struct vm_map_copyin_args_data { > vm_map_t map; > vm_offset_t src_addr; > vm_size_t src_len; > vm_offset_t destroy_addr; > vm_size_t destroy_len; > boolean_t steal_pages; > -} vm_map_copyin_args_data_t, *vm_map_copyin_args_t; > +} vm_map_copyin_args_data_t, *vm_map_copyin_args_t; > > #define VM_MAP_COPYIN_ARGS_NULL ((vm_map_copyin_args_t) 0) > > diff --git a/vm/vm_user.c b/vm/vm_user.c > index 9e789eba..b3887ad1 100644 > --- a/vm/vm_user.c > +++ b/vm/vm_user.c > @@ -430,12 +430,11 @@ kern_return_t vm_map( > * > * [ To unwire the pages, specify VM_PROT_NONE. ] > */ > -kern_return_t vm_wire(port, map, start, size, access) > - const ipc_port_t port; > - vm_map_t map; > - vm_offset_t start; > - vm_size_t size; > - vm_prot_t access; > +kern_return_t vm_wire(const ipc_port_t port, > + vm_map_t map, > + vm_offset_t start, > + vm_size_t size, > + vm_prot_t access) > { > boolean_t priv; > > -- > 2.37.2 > > >
-- Samuel --- Pour une évaluation indépendante, transparente et rigoureuse ! Je soutiens la Commission d'Évaluation de l'Inria.