From d330c907bdc5d8e3c242cea76dfafaae84041270 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 1 Apr 1999 05:22:58 +0000 Subject: Ken McDonell from SGI was interested in adding some profiling capabilities to Samba so that Samba could talk to the SGI PCP (Performance Co-Pilot) apps. This change adds a profiling shared memory area and uses it to count two fairly trivial things, the number of uid switches and the number of SMB packets processes. To add more just edit include/profile.h and then increment it at the right place. I've also added a -P switch to smbstatus to dump the profile area. (This used to be commit ef3d61a80ad0b87c196a63ef2bd4fe8fc3863bd0) --- source3/smbd/process.c | 4 ++++ source3/smbd/server.c | 9 ++++++++- source3/smbd/uid.c | 4 ++++ 3 files changed, 16 insertions(+), 1 deletion(-) (limited to 'source3/smbd') diff --git a/source3/smbd/process.c b/source3/smbd/process.c index a38e6da683..420598157f 100644 --- a/source3/smbd/process.c +++ b/source3/smbd/process.c @@ -545,6 +545,10 @@ void process_smb(char *inbuf, char *outbuf) int32 len = smb_len(inbuf); int nread = len + 4; +#ifdef WITH_PROFILE + profile_p->smb_count++; +#endif + if (trans_num == 0) { /* on the first packet, check the global hosts allow/ hosts deny parameters before doing any parsing of the packet diff --git a/source3/smbd/server.c b/source3/smbd/server.c index 9b397bcdeb..dcc53cb8d0 100644 --- a/source3/smbd/server.c +++ b/source3/smbd/server.c @@ -618,7 +618,14 @@ static void usage(char *pname) return(-1); init_structs(); - + +#ifdef WITH_PROFILE + if (!profile_setup(False)) { + DEBUG(0,("ERROR: failed to setup profiling\n")); + return -1; + } +#endif + /* * Set the machine NETBIOS name if not already * set from the config file. diff --git a/source3/smbd/uid.c b/source3/smbd/uid.c index f76fa49d56..b2407ed5fc 100644 --- a/source3/smbd/uid.c +++ b/source3/smbd/uid.c @@ -109,6 +109,10 @@ static BOOL become_uid(uid_t uid) current_user.uid = uid; +#ifdef WITH_PROFILE + profile_p->uid_changes++; +#endif + return(True); } -- cgit