summaryrefslogtreecommitdiff
path: root/libguile
Commit message (Expand)AuthorAgeFilesLines
* * __scm.h (SCM_ALLOW_INTS_ONLY): Removed....(SCM_NONREC_CRITICAL_SECTION_START, SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START, SCM_REC_CRITICAL_SECTION_END): New macros. (SCM_CRITICAL_SECTION_START/END): Defined here. * eval.c: Insert SOURCE_SECTION_START / SOURCE_SECTION_END around the three calls to scm_m_expand_body. * gc.h: #include "libguile/pthread-threads.h"; (SCM_FREELIST_CREATE, SCM_FREELIST_LOC): New macros. * gc.c (scm_i_freelist, scm_i_freelist2): Defined to be of type scm_t_key; * gc.c, gc-freelist.c, inline.h: Use SCM_FREELIST_LOC for freelist access. * gc-freelist.c (scm_gc_init_freelist): Create freelist keys. * gc-freelist.c, threads.c (really_launch): Use SCM_FREELIST_CREATE. * gc-malloc.c (scm_realloc, scm_gc_register_collectable_memory): * gc.c (scm_i_expensive_validation_check, scm_gc, scm_gc_for_newcell): Put threads to sleep before doing GC-related heap administration so that those pieces of code are executed single-threaded. We might consider rewriting these code sections in terms of a "call_gc_code_singly_threaded" construct instead of calling the pair of scm_i_thread_put_to_sleep () and scm_i_thread_wake_up (). Also, we would want to have as many of these sections eleminated. * init.c (scm_init_guile_1): Call scm_threads_prehistory. * inline.h: #include "libguile/threads.h" * pthread-threads.h: Macros now conform more closely to the pthreads interface. Some of them now take a second argument. * threads.c, threads.h: Many changes. * configure.in: Temporarily replaced "copt" threads option with new option "pthreads". (USE_PTHREAD_THREADS): Define if pthreads configured. Mikael Djurfeldt2002-12-0917-483/+981
* *** empty log message ***Rob Browning2002-12-091-0/+17
* * Makefile.am (schemelibdir): VERSION -> GUILE_EFFECTIVE_VERSION....(libpath.h): use GUILE_EFFECTIVE_VERSION to compute SCM_LIBRARY_DIR. (version.h): generate this here rather than configure.in. This approach tracks source edits better (i.e. more immediately). Might be worth considering for other .in files too. Rob Browning2002-12-091-3/+16
* * version.c (scm_effective_version): new function, also add...effective-version. Rob Browning2002-12-091-0/+25
* * version.h.in (SCM_MICRO_VERSION): use @--@ substitution now....(SCM_MINOR_VERSION): use @--@ substitution now. (SCM_MICRO_VERSION): use @--@ substitution now. (scm_effective_version): new function prototype. Rob Browning2002-12-091-3/+4
* *** empty log message ***Marius Vollmer2002-12-021-0/+43
* (SCM_VALIDATE_THREAD): Moved to threads.h.Marius Vollmer2002-12-021-2/+0
* * threads.h: Do not include "libguile/coop-defs.h". Include..."libguile/pthread-threads.h" for USE_COPT_THREADS. Removed (previously deprecated) C level thread API prototypes. They are now in the thread package specific headers, "null-threads.h" and "pthread-threads.h". (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR): New. (scm_threads_init): Removed. (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END, SCM_THREAD_SWITCHING_CODE, scm_i_switch_counter, SCM_I_THREAD_SWITCH_COUNT): Define here. (scm_single_thread_p): Removed. (scm_call_with_new_thread): Take two args directly instead of list of two args. (scm_i_thread_data, scm_i_set_thread_data, SCM_THREAD_LOCAL_DATA, SCM_SET_THREAD_LOCAL_DATA): Define here. * threads.c: Merged with "coop-pthreads.c". Marius Vollmer2002-12-022-172/+1011
* * pthread-threads.h: New, implement pthread-like API by deferring to...pthread itself. Marius Vollmer2002-12-021-0/+99
* * null-threads.h: Implement pthread-like API as a set of macros.Marius Vollmer2002-12-021-8/+89
* (libguile_la_SOURCES): Removed iselect.c....(noinst_HEADERS): Removed coop-threads.c, coop-threads.h, coop.c, null-threads.c, coop-pthreads.c. (modinclude_HEADERS): Removed coop-defs.h, coop-pthreads.h. Added pthread-threads.h. Marius Vollmer2002-12-021-8/+6
* (scm_init_guile_1): Do not call scm_init_iselect, which has been lost...in the reorganization. Marius Vollmer2002-12-021-1/+0
* * eval.h (scm_t_trampoline_1, scm_t_trampoline_2): New types....* eval.c, eval.h (scm_trampoline_1, scm_trampoline_2): New functions. * eval.c (call_subr2_2, call_lsubr_2, call_closure_2): New functions; (map, for-each): Handle also application on two args as a special case; Use trampolines. * sort.c (scm_cmp_function): Choose subr2less for scm_tc7_subr_2o; (subr2oless): Removed. (scm_restricted_vector_sort_x): Use scm_return_first to keep the vector GC protected. * eval.c (check_map_args): Use scm_out_of_range_pos instead of scm_out_of_range. Mikael Djurfeldt2002-12-014-24/+284
* * evalext.[ch] (scm_m_undefine, undefine): Deprecated.Dirk Herrmann2002-11-243-1/+8
* * debug.c (scm_make_iloc): Added missing "return".Mikael Djurfeldt2002-11-172-2/+8
* *** empty log message ***Marius Vollmer2002-11-171-0/+5
* (scm_eval_string_in_module): Validate second arg to be a module....Thanks to Arno Peters! Marius Vollmer2002-11-171-0/+2
* * .cvsignore: remove goops.cDirk Herrmann2002-11-162-1/+4
* * modules.c (scm_env_top_level, scm_lookup_closure_module,...module_variable, scm_module_lookup_closure, scm_module_transformer, scm_sym2var, scm_module_reverse_lookup, scm_system_module_env_p): Don't compare SCM values with C operators == or !=. Avoid SCM_IMP predicates. Prefer !SCM_FALSEP over SCM_NFALSEP. Dirk Herrmann2002-11-162-16/+25
* * eval.h (SCM_MAKE_ILOC): New macro....* debug.c (scm_make_iloc): Use SCM_MAKE_ILOC instead of computing the iloc bitpattern here. Dirk Herrmann2002-11-163-4/+14
* * coop-pthreads.c, coop-pthreads.h: scm_internal_select should be...part of the API, otherwise it's difficult to write Guile extensions using non-blocking I/O => moved #include "libguile/iselect.h" from coop-pthreads.c --> coop-pthreads.h. * coop-pthreads.c (scm_unlock_mutex): Changed s_lock_mutex --> s_unlock_mutex. Mikael Djurfeldt2002-11-143-3/+13
* *** empty log message ***Marius Vollmer2002-11-101-0/+8
* (USE_THREADS, GUILE_ISELECT): Do not define here. They are defined in...configure.in. Marius Vollmer2002-11-101-9/+0
* Removed SCM_API from function definitions. SCM_API is only for...declarations. Marius Vollmer2002-11-101-10/+10
* * coop-pthreads.h: Added support for thread specific data to the...generic C API for the coop-pthreads case. Mikael Djurfeldt2002-11-072-0/+16
* * threads.c, threads.h (scm_cond_broadcast): Added missing function.Mikael Djurfeldt2002-11-072-0/+8
* * threads.c, threads.h (scm_cond_init): Undo unintentional API...change. Mikael Djurfeldt2002-11-073-2/+7
* *** empty log message ***Marius Vollmer2002-11-041-0/+5
* (coop_next_runnable_thread): Removed, wich should have happened when...GUILE_ISELECT was hard-wired. Marius Vollmer2002-11-041-35/+1
* *** empty log message ***Marius Vollmer2002-11-031-0/+10
* * __scm.h (USE_THREADS, GUILE_ISELECT): Define when...SCM_DEBUG_DEPRECATED. Removed their use thru-out Guile. Marius Vollmer2002-11-0318-273/+25
* (libguile_la_SOURCES): Added threads.c...(DOT_DOC_FILES): Added threads.doc. (DOT_X_FILES): Added threads.x. (EXTRA_libguile_la_SOURCES): Removed threads.c. (noinst_HEADERS): Added coop-pthreads.c. (modinclude_HEADERS): Added coop-pthreads.h. Marius Vollmer2002-11-031-12/+12
* (scm_integer_expt): Make 0^z == 0 for z != 0. Also for reals.Marius Vollmer2002-11-031-1/+1
* *** empty log message ***Marius Vollmer2002-11-031-0/+3
* Include "_scm.h" before testing HAVE_UNISTD_H. Thanks to Bill...Schottstaedt! Marius Vollmer2002-11-031-1/+2
* *** empty log message ***Marius Vollmer2002-11-031-0/+2
* (scm_integer_expt): Make 0^z == 0 for z != 0.Marius Vollmer2002-11-031-1/+2
* *** empty log message ***Marius Vollmer2002-11-031-0/+13
* (HAVE_RESTARTABLE_SYSCALLS): Do define even when...SCM_COPT_THREADS is defined. (SCM_SYSCALL): Use EINTR-expection version when SCM_COPT_THREADS is defined. Marius Vollmer2002-11-031-5/+3
* Some harmless renamings of internal stuff....(create_thread): New, generalized version of scm_call_with_new_thread. (scm_call_with_new_thread): Use it. (scm_spawn_thread): New, use create_thread. Marius Vollmer2002-11-031-179/+83
* *** empty log message ***Marius Vollmer2002-11-021-0/+10
* Redone completely, you might start testing it now.Marius Vollmer2002-11-022-288/+460
* Include <errno.h< so that SCM_SYSCALL is correctly...defined when HAVE_RESTARTABLE_SYSCALLS is not defined. (HAVE_RESTARTABLE_SYSCALLS): Do not define when USE_COPT_THREADS is defined. Marius Vollmer2002-11-021-1/+8
* Closer, but not there.Marius Vollmer2002-10-301-85/+142
* Updated, but still totally unusable.Marius Vollmer2002-10-302-520/+508
* *** empty log message ***Marius Vollmer2002-10-271-1/+127
* * coop-pthreads.h, coop-pthreads.c: New, but unfinished.Marius Vollmer2002-10-272-0/+1032
* (signal_cell_handlers, install_handler_data,...scm_delq_spine_x, really_install_handler, install_handler): New scheme for triggering signal handlers, to simplify take_signal. (take_signal): Simplified, to avoid race conditions. (scm_sigaction_for_thread): Use new Scheme. Validate that thread hasn't exited yet. Marius Vollmer2002-10-271-20/+153
* (scm_async_click): Reset pending_asyncs, handle...signal_asyncs. Don't set cdr of a non-signal async to #f. (scm_i_queue_async_cell): Do not check cdr of cell for #f, queue always. Set pending_asyncs. (scm_system_async_mark_for_thread): Check that thread has not exited. (scm_unmask_signals, decrease_block): Call scm_async_click after block_asyncs becomes zero. Marius Vollmer2002-10-271-30/+46
* * __scm.h (SCM_ASYNC_CLICK): Check pending_asyncs instead of...active_asyncs. * root.h (scm_root_state): Added pending_asyncs and signal_asyncs fields. * root.c (root_mark): Mark them. (make_root): Initialize them. Marius Vollmer2002-10-273-1/+8