1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
|
/*
* The contents of this file are subject to the AOLserver Public License
* Version 1.1 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://aolserver.com/.
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
* the License for the specific language governing rights and limitations
* under the License.
*
* The Original Code is AOLserver Code and related documentation
* distributed by AOL.
*
* The Initial Developer of the Original Code is America Online,
* Inc. Portions created by AOL are Copyright (C) 1999 America Online,
* Inc. All Rights Reserved.
*
* Alternatively, the contents of this file may be used under the terms
* of the GNU General Public License (the "GPL"), in which case the
* provisions of GPL are applicable instead of those above. If you wish
* to allow use of your version of this file only under the terms of the
* GPL and not to allow others to use your version of this file under the
* License, indicate your decision by deleting the provisions above and
* replace them with the notice and other provisions required by the GPL.
* If you do not delete the provisions above, a recipient may use your
* version of this file under either the License or the GPL.
*/
#include "thread.h"
static const char *RCSID = "@(#) $Header: /cvsroot/aolserver/aolserver/thread/debug.c,v 1.3 2000/08/02 23:38:25 kriston Exp $, compiled: " __DATE__ " " __TIME__;
static void
Log(char cmd, Ns_Mutex *lockPtr, char *file, int line)
{
static Ns_Mutex lock;
static FILE *fp;
static unsigned int next;
Ns_MutexLock(&lock);
if (fp == NULL) {
char *log = getenv("NS_THREAD_DEBUG_FILE");
if (log == NULL) {
log = "/tmp/nsthread.log";
}
fp = fopen(log, "w");
if (fp == NULL) {
NsThreadAbort("fopen(%s) failed: %s", log, strerror(errno));
}
}
fprintf(fp, "%d %d %c %p %-40s:%d\n", (int) time(NULL), next++, cmd,
lockPtr, file, line);
fflush(fp);
Ns_MutexUnlock(&lock);
}
void
Ns_MutexDebugLock(Ns_Mutex *lockPtr, char *file, int line)
{
Log('L', lockPtr, file, line);
Ns_MutexLock(lockPtr);
}
void
Ns_MutexDebugUnlock(Ns_Mutex *lockPtr, char *file, int line)
{
Log('U', lockPtr, file, line);
Ns_MutexUnlock(lockPtr);
}
|