diff --git a/src/network/net_slirp.c b/src/network/net_slirp.c index d22071b24..256f79f22 100644 --- a/src/network/net_slirp.c +++ b/src/network/net_slirp.c @@ -36,13 +36,6 @@ static void *slirpMutex; -void -network_slirp_mutex_init(void) -{ - slirpMutex = thread_create_mutex(L"86Box.SLiRPMutex"); -} - - static void startslirp(void) { @@ -176,6 +169,8 @@ network_slirp_setup(uint8_t *mac, NETRXCB func, void *arg) poll_rx = func; poll_arg = arg; + slirpMutex = thread_create_mutex(L"86Box.SLiRPMutex"); + poll_data.wake_poll_thread = thread_create_event(); poll_data.poll_complete = thread_create_event(); @@ -208,6 +203,8 @@ network_slirp_close(void) ; #endif + thread_close_mutex(slirpMutex); + /* OK, now shut down SLiRP itself. */ QueueDestroy(sl); slirp_exit(0); diff --git a/src/network/network.c b/src/network/network.c index 5b09ebda8..f6866def0 100644 --- a/src/network/network.c +++ b/src/network/network.c @@ -89,8 +89,6 @@ network_init(void) if (network_type != NET_TYPE_PCAP) network_pcap_close(); - - network_slirp_mutex_init(); } diff --git a/src/pc.c b/src/pc.c index 8461b4694..e4f507c14 100644 --- a/src/pc.c +++ b/src/pc.c @@ -294,7 +294,6 @@ usage: hdd_init(); network_init(); cdrom_global_init(); - scsi_mutex_init(); /* Load the configuration file. */ config_load(cfg); diff --git a/src/scsi/scsi.c b/src/scsi/scsi.c index fc2b49584..2a3891ef2 100644 --- a/src/scsi/scsi.c +++ b/src/scsi/scsi.c @@ -130,6 +130,12 @@ void scsi_mutex_init(void) } +void scsi_mutex_close(void) +{ + thread_close_mutex(scsiMutex); +} + + void scsi_card_init(void) { int i, j; diff --git a/src/scsi/scsi.h b/src/scsi/scsi.h index 9abcdf34b..5535846b0 100644 --- a/src/scsi/scsi.h +++ b/src/scsi/scsi.h @@ -294,6 +294,7 @@ extern int scsi_card_has_config(int card); extern char *scsi_card_get_internal_name(int card); extern int scsi_card_get_from_internal_name(char *s); extern void scsi_mutex_init(void); +extern void scsi_mutex_close(void); extern void scsi_card_init(void); extern void scsi_card_reset(void); diff --git a/src/scsi/scsi_x54x.c b/src/scsi/scsi_x54x.c index 0785ed5b8..1d42fd3d7 100644 --- a/src/scsi/scsi_x54x.c +++ b/src/scsi/scsi_x54x.c @@ -1861,6 +1861,8 @@ x54x_init(device_t *info) timer_add(x54x_reset_poll, &dev->ResetCB, &dev->ResetCB, dev); + scsi_mutex_init(); + poll_complete = thread_create_event(); /* Create a waitable event. */ @@ -1899,6 +1901,8 @@ x54x_close(void *priv) evt = NULL; } + scsi_mutex_close(); + if (dev->nvr != NULL) free(dev->nvr);