1/* 2 samba -- Unix SMB/CIFS implementation. 3 Copyright (C) 2002 by Martin Pool 4 5 This program is free software; you can redistribute it and/or modify 6 it under the terms of the GNU General Public License as published by 7 the Free Software Foundation; either version 2 of the License, or 8 (at your option) any later version. 9 10 This program is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 GNU General Public License for more details. 14 15 You should have received a copy of the GNU General Public License 16 along with this program; if not, write to the Free Software 17 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 18*/ 19 20#include "includes.h" 21 22/** 23 * @file dmallocmsg.c 24 * 25 * Glue code to cause dmalloc info to come out when we receive a prod 26 * over samba messaging. 27 **/ 28 29#ifdef ENABLE_DMALLOC 30static unsigned long our_dm_mark = 0; 31#endif /* ENABLE_DMALLOC */ 32 33 34/** 35 * Respond to a POOL_USAGE message by sending back string form of memory 36 * usage stats. 37 **/ 38static void msg_req_dmalloc_mark(int UNUSED(msg_type), pid_t UNUSED(src_pid), 39 void *UNUSED(buf), size_t UNUSED(len)) 40{ 41#ifdef ENABLE_DMALLOC 42 our_dm_mark = dmalloc_mark(); 43 DEBUG(2,("Got MSG_REQ_DMALLOC_MARK: mark set\n")); 44#else 45 DEBUG(2,("Got MSG_REQ_DMALLOC_MARK but dmalloc not in this process\n")); 46#endif 47} 48 49 50 51static void msg_req_dmalloc_log_changed(int UNUSED(msg_type), 52 pid_t UNUSED(src_pid), 53 void *UNUSED(buf), size_t UNUSED(len)) 54{ 55#ifdef ENABLE_DMALLOC 56 dmalloc_log_changed(our_dm_mark, True, True, True); 57 DEBUG(2,("Got MSG_REQ_DMALLOC_LOG_CHANGED: done\n")); 58#else 59 DEBUG(2,("Got MSG_REQ_DMALLOC_LOG_CHANGED but dmalloc not in this process\n")); 60#endif 61} 62 63 64/** 65 * Register handler for MSG_REQ_POOL_USAGE 66 **/ 67void register_dmalloc_msgs(void) 68{ 69 message_register(MSG_REQ_DMALLOC_MARK, msg_req_dmalloc_mark); 70 message_register(MSG_REQ_DMALLOC_LOG_CHANGED, msg_req_dmalloc_log_changed); 71 DEBUG(2, ("Registered MSG_REQ_DMALLOC_MARK and LOG_CHANGED\n")); 72} 73