HCoop
/
bpt
/
guile.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'stable-2.0'
[bpt/guile.git]
/
libguile
/
async.h
diff --git
a/libguile/async.h
b/libguile/async.h
index
68952b0
..
00b7914
100644
(file)
--- a/
libguile/async.h
+++ b/
libguile/async.h
@@
-3,7
+3,8
@@
#ifndef SCM_ASYNC_H
#define SCM_ASYNC_H
#ifndef SCM_ASYNC_H
#define SCM_ASYNC_H
-/* Copyright (C) 1995,1996,1997,1998,2000,2001, 2002, 2004, 2005, 2006, 2008, 2009, 2011 Free Software Foundation, Inc.
+/* Copyright (C) 1995-1998, 2000-2002, 2004-2006, 2008, 2009, 2011
+ * 2014 Free Software Foundation, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
@@
-44,10
+45,10
@@
SCM_API SCM scm_run_asyncs (SCM list_of_a);
SCM_API SCM scm_noop (SCM args);
SCM_API SCM scm_call_with_blocked_asyncs (SCM proc);
SCM_API SCM scm_call_with_unblocked_asyncs (SCM proc);
SCM_API SCM scm_noop (SCM args);
SCM_API SCM scm_call_with_blocked_asyncs (SCM proc);
SCM_API SCM scm_call_with_unblocked_asyncs (SCM proc);
-void *scm_c_call_with_blocked_asyncs (void *(*p) (void *d), void *d);
-void *scm_c_call_with_unblocked_asyncs (void *(*p) (void *d), void *d);
-void scm_dynwind_block_asyncs (void);
-void scm_dynwind_unblock_asyncs (void);
+
SCM_API
void *scm_c_call_with_blocked_asyncs (void *(*p) (void *d), void *d);
+
SCM_API
void *scm_c_call_with_unblocked_asyncs (void *(*p) (void *d), void *d);
+
SCM_API
void scm_dynwind_block_asyncs (void);
+
SCM_API
void scm_dynwind_unblock_asyncs (void);
/* Critical sections */
/* Critical sections */
@@
-78,6
+79,22
@@
SCM_API void scm_critical_section_end (void);
scm_async_tick (); \
} while (0)
scm_async_tick (); \
} while (0)
+# define scm_i_pthread_mutex_lock_block_asyncs(m) \
+ do \
+ { \
+ SCM_I_CURRENT_THREAD->block_asyncs++; \
+ scm_i_pthread_mutex_lock (m); \
+ } \
+ while (0)
+
+# define scm_i_pthread_mutex_unlock_unblock_asyncs(m) \
+ do \
+ { \
+ scm_i_pthread_mutex_unlock (m); \
+ SCM_I_CURRENT_THREAD->block_asyncs--; \
+ } \
+ while (0)
+
#else /* !BUILDING_LIBGUILE */
# define SCM_CRITICAL_SECTION_START scm_critical_section_start ()
#else /* !BUILDING_LIBGUILE */
# define SCM_CRITICAL_SECTION_START scm_critical_section_start ()