diff options
author | Marius Vollmer <mvo@zagadka.de> | 2005-01-24 19:14:54 +0000 |
---|---|---|
committer | Marius Vollmer <mvo@zagadka.de> | 2005-01-24 19:14:54 +0000 |
commit | a54a94b39707f47a1f30533bcf7664094d65d073 (patch) | |
tree | 69a524a4c3fbb084e1e2fef05da61e1852700909 /libguile/ports.c | |
parent | be1b896c82273d97b79cd839d7281b46e54920f8 (diff) | |
download | guile-a54a94b39707f47a1f30533bcf7664094d65d073.tar.gz |
Threading changes.
Diffstat (limited to 'libguile/ports.c')
-rw-r--r-- | libguile/ports.c | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/libguile/ports.c b/libguile/ports.c index ffa01f71f..b0ede6610 100644 --- a/libguile/ports.c +++ b/libguile/ports.c @@ -493,7 +493,7 @@ scm_t_port **scm_i_port_table; long scm_i_port_table_size = 0; /* Number of ports in scm_i_port_table. */ long scm_i_port_table_room = 20; /* Size of the array. */ -SCM_GLOBAL_MUTEX (scm_i_port_table_mutex); +pthread_mutex_t scm_i_port_table_mutex = PTHREAD_MUTEX_INITIALIZER; /* This function is not and should not be thread safe. */ @@ -764,9 +764,9 @@ SCM_DEFINE (scm_close_port, "close-port", 1, 0, 0, rv = (scm_ptobs[i].close) (port); else rv = 0; - scm_mutex_lock (&scm_i_port_table_mutex); + scm_pthread_mutex_lock (&scm_i_port_table_mutex); scm_remove_from_port_table (port); - scm_mutex_unlock (&scm_i_port_table_mutex); + pthread_mutex_unlock (&scm_i_port_table_mutex); SCM_CLR_PORT_OPEN_FLAG (port); return scm_from_bool (rv >= 0); } @@ -815,18 +815,18 @@ scm_c_port_for_each (void (*proc)(void *data, SCM p), void *data) can change arbitrarily (from a GC, for example). So we first collect the ports into a vector. -mvo */ - scm_mutex_lock (&scm_i_port_table_mutex); + scm_pthread_mutex_lock (&scm_i_port_table_mutex); n = scm_i_port_table_size; - scm_mutex_unlock (&scm_i_port_table_mutex); + pthread_mutex_unlock (&scm_i_port_table_mutex); ports = scm_c_make_vector (n, SCM_BOOL_F); - scm_mutex_lock (&scm_i_port_table_mutex); + scm_pthread_mutex_lock (&scm_i_port_table_mutex); if (n > scm_i_port_table_size) n = scm_i_port_table_size; for (i = 0; i < n; i++) SCM_SIMPLE_VECTOR_SET (ports, i, scm_i_port_table[i]->port); - scm_mutex_unlock (&scm_i_port_table_mutex); + pthread_mutex_unlock (&scm_i_port_table_mutex); for (i = 0; i < n; i++) proc (data, SCM_SIMPLE_VECTOR_REF (ports, i)); @@ -938,13 +938,13 @@ SCM_DEFINE (scm_flush_all_ports, "flush-all-ports", 0, 0, 0, { size_t i; - scm_mutex_lock (&scm_i_port_table_mutex); + scm_pthread_mutex_lock (&scm_i_port_table_mutex); for (i = 0; i < scm_i_port_table_size; i++) { if (SCM_OPOUTPORTP (scm_i_port_table[i]->port)) scm_flush (scm_i_port_table[i]->port); } - scm_mutex_unlock (&scm_i_port_table_mutex); + pthread_mutex_unlock (&scm_i_port_table_mutex); return SCM_UNSPECIFIED; } #undef FUNC_NAME @@ -1638,7 +1638,7 @@ write_void_port (SCM port SCM_UNUSED, static SCM scm_i_void_port (long mode_bits) { - scm_mutex_lock (&scm_i_port_table_mutex); + scm_pthread_mutex_lock (&scm_i_port_table_mutex); { SCM answer = scm_new_port_table_entry (scm_tc16_void_port); scm_t_port * pt = SCM_PTAB_ENTRY(answer); @@ -1647,7 +1647,7 @@ scm_i_void_port (long mode_bits) SCM_SETSTREAM (answer, 0); SCM_SET_CELL_TYPE (answer, scm_tc16_void_port | mode_bits); - scm_mutex_unlock (&scm_i_port_table_mutex); + pthread_mutex_unlock (&scm_i_port_table_mutex); return answer; } } |