We seem to cast adb_cuda_tickle() to a void pointer to bypass
timeout_set(9)'s type checking
The actual function takes no parameters, but the timeout layer doesn't
know that. Eek. This is no good.
The fix is trivial. Add an unused void pointer parameter to
adb_cuda_tickle().
ok?
Index: adb.c
===================================================================
RCS file: /cvs/src/sys/arch/macppc/dev/adb.c,v
retrieving revision 1.43
diff -u -p -r1.43 adb.c
--- adb.c 11 Mar 2021 11:16:58 -0000 1.43
+++ adb.c 22 Jun 2021 19:26:07 -0000
@@ -228,7 +228,7 @@ void print_single(u_char *);
void adb_intr_cuda(void);
void adb_soft_intr(void);
int send_adb_cuda(u_char *, u_char *, void *, void *, int);
-void adb_cuda_tickle(void);
+void adb_cuda_tickle(void *);
void adb_pass_up(struct adbCommand *);
void adb_op_comprout(caddr_t, caddr_t, int);
void adb_reinit(struct adb_softc *);
@@ -276,7 +276,7 @@ print_single(u_char *str)
#endif
void
-adb_cuda_tickle(void)
+adb_cuda_tickle(void *unused)
{
volatile int s;
@@ -1160,7 +1160,7 @@ adb_reinit(struct adb_softc *sc)
#endif
if (adbHardware == ADB_HW_CUDA) {
- timeout_set(&adb_cuda_timeout, (void *)adb_cuda_tickle, NULL);
+ timeout_set(&adb_cuda_timeout, adb_cuda_tickle, NULL);
timeout_add(&adb_cuda_timeout, ADB_TICKLE_TICKS);
}