summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlain Magloire <alainm@gnu.org>2003-02-24 05:14:50 +0000
committerAlain Magloire <alainm@gnu.org>2003-02-24 05:14:50 +0000
commit29b7f809ef65fabed523a89e8df57840362523ce (patch)
tree40dd8f7ed826b3e10373c3c8e26bdd7bb159380e
parentaee5de3eb14ed3465cee88a349907f6084a5fee5 (diff)
downloadmailutils-29b7f809ef65fabed523a89e8df57840362523ce.tar.gz
mailutils-29b7f809ef65fabed523a89e8df57840362523ce.tar.bz2
simple thread-safe implementation of refcount.
-rw-r--r--include/mailutils/refcount.h43
-rw-r--r--include/mailutils/types.h2
2 files changed, 45 insertions, 0 deletions
diff --git a/include/mailutils/refcount.h b/include/mailutils/refcount.h
new file mode 100644
index 000000000..d4a4bf27d
--- /dev/null
+++ b/include/mailutils/refcount.h
@@ -0,0 +1,43 @@
+/* GNU mailutils - a suite of utilities for electronic mail
+ Copyright (C) 1999, 2000, 2001, 2002, 2003 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 as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
+
+#ifndef _MAILUTILS_REFCOUNT_H
+#define _MAILUTILS_REFCOUNT_H
+
+#include <mailutils/types.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* FIXME: Declaration should be hidden in mailutils/sys/refcount.h */
+struct _mu_refcount
+{
+ unsigned int ref;
+ monitor_t lock;
+};
+
+extern int mu_refcount_create __P ((mu_refcount_t *));
+extern void mu_refcount_destroy __P ((mu_refcount_t *));
+extern int mu_refcount_inc __P ((mu_refcount_t));
+extern int mu_refcount_dec __P ((mu_refcount_t));
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MAILUTILS_REFCOUNT_H */
diff --git a/include/mailutils/types.h b/include/mailutils/types.h
index 70a4aab25..0345ae40f 100644
--- a/include/mailutils/types.h
+++ b/include/mailutils/types.h
@@ -59,6 +59,7 @@ struct _message;
struct _mime;
struct _mu_mailcap;
struct _mu_mailcap_entry;
+struct _mu_refcount;
struct _observable;
struct _observer;
struct _property;
@@ -87,6 +88,7 @@ typedef struct _message *message_t;
typedef struct _mime *mime_t;
typedef struct _mu_mailcap *mu_mailcap_t;
typedef struct _mu_mailcap_entry *mu_mailcap_entry_t;
+typedef struct _mu_refcount *mu_refcount_t;
typedef struct _observable *observable_t;
typedef struct _observer *observer_t;
typedef struct _property *property_t;

Return to:

Send suggestions and report system problems to the System administrator.