/*
* Copyright (c) 2000 Silicon Graphics, Inc. All Rights Reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of version 2.1 of the GNU Lesser General Public
* License as published by the Free Software Foundation.
*
* This program is distributed in the hope that it would be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
* Further, this software is distributed without any warranty that it is
* free of the rightful claim of any third person regarding infringement
* or the like. Any license provided herein, whether implied or
* otherwise, applies only to this software file. Patent licenses, if
* any, provided herein do not apply to combinations of this program with
* other software, or any other product whatsoever.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this program; if not, write the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
* USA.
*
* Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy,
* Mountain View, CA 94043, or:
*
* http://www.sgi.com
*
* For further information regarding this notice, see:
*
* http://oss.sgi.com/projects/GenInfo/NoticeExplan
*/
#ifndef CI_PTHREAD_H
#define CI_PTHREAD_H
#ident "$Id: ci_pthread.h,v 1.1 2000/08/31 19:16:32 vasa Exp $"
/* The thread structure defined below is maintained for each
* thread currently in the process. The main goal is to able to
* print logical thread id's and the source file name and line
* number in log messages.
*/
typedef struct ci_pthread_info_s {
pthread_t thr; /* The pthread */
int id; /* Logical thread id */
char *filename; /* Used by logging. Stores the filename
* for the current log operation issued
* by this thread. */
int lineno; /* Used by logging. Stores the lineno
* for the current log operation issued
* by this thread. */
int inuse; /* Whether this thread entry is in use.
* 1 = inuse, 0 = free. */
} ci_pthread_info_t;
/* prototypes from log/lib/src/ci_pthread.c */
int ci_pthread_self(void);
int ci_pthread_pthread_to_id(pthread_t);
int ci_pthread_id_to_pthread(int, pthread_t *);
int ci_pthread_create(pthread_t *, pthread_attr_t *,
void *(*)(void *), void *);
void ci_pthread_exit(void *);
int ci_pthread_set_log_info(char *, int);
int ci_pthread_reset_log_info(void);
void ci_pthread_get_log_info(char **, int *);
int ci_pthread_mlock(pthread_mutex_t *, sigset_t *);
void ci_pthread_munlock(pthread_mutex_t *, sigset_t *);
int ci_pthread_mtrylock(pthread_mutex_t *, sigset_t *);
#endif /* CI_PTHREAD_H */