From 29b7f809ef65fabed523a89e8df57840362523ce Mon Sep 17 00:00:00 2001 From: Alain Magloire Date: Mon, 24 Feb 2003 05:14:50 +0000 Subject: simple thread-safe implementation of refcount. --- include/mailutils/refcount.h | 43 +++++++++++++++++++++++++++++++++++++++++++ include/mailutils/types.h | 2 ++ 2 files changed, 45 insertions(+) create mode 100644 include/mailutils/refcount.h 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 + +#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; -- cgit v1.2.1