[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-core-devel
Subject:    Fwd: [Xpert]New extension for keeping track of client resources
From:       Guillaume Laurent <glaurent () telegraph-road ! org>
Date:       2002-03-06 22:32:43
[Download RAW message or body]

Some might find this useful...

----------  Forwarded Message  ----------

Subject: Fwd: [Xpert]New extension for keeping track of client resources
Date: Wed, 6 Mar 2002 14:23:36 -0800 (PST)
From: jg@pa.dec.com (Jim Gettys)
To: gnome-hackers@gnome.org

For those of you willing to build out of XFree86's CVS, a new tool
that will get you resource usage out of the X server.  We should have
done this in 1988.  Sigh...
			- Jim

--
Jim Gettys
Cambridge Research Laboratory
Compaq Computer Corporation
jg@pa.dec.com

Received: by src-mail.pa.dec.com; id NAA24989; Wed, 6 Mar 2002 13:27:49 -0800 (PST)
Received: from taynzmail03.nz-tay.cpqcorp.net by pobox1.pa.dec.com (5.65v3.2/1.1.10.5/07Nov97-1157AM)
	id AA13591; Wed, 6 Mar 2002 13:27:48 -0800
Received: from ztxmail02.ztx.compaq.com (ztxmail02.nz-cce.cpqcorp.net [161.114.8.206])
	by taynzmail03.nz-tay.cpqcorp.net (Postfix) with ESMTP id 25D5B6EE
	for <jg@pa.dec.com>; Wed,  6 Mar 2002 16:27:46 -0500 (EST)
Received: from public.xfree86.org (xf86.isc.org [204.152.184.37])
	by ztxmail02.ztx.compaq.com (Postfix) with ESMTP id 45D523335
	for <jg@pa.dec.com>; Wed,  6 Mar 2002 15:27:45 -0600 (CST)
Received: from public.XFree86.Org (localhost [127.0.0.1])
	by public.xfree86.org (Postfix) with ESMTP
	id F1E71276FF; Wed,  6 Mar 2002 16:26:37 -0500 (EST)
Received: from thelma.nvidia.com (z06.nvidia.com [209.213.198.25])
	by public.xfree86.org (8.11.6/8.11.6) with ESMTP id g26LQbY28842
	for <xpert@xfree86.org>; Wed, 6 Mar 2002 13:26:37 -0800 (PST)
	(envelope-from mvojkovich@exchange.nvidia.com)
Received: from dhcp-197-155.nvidia.com (dhcp-197-155.nvidia.com [172.16.197.155])
	by thelma.nvidia.com (8.8.8+Sun/8.8.8) with ESMTP id NAA10948
	for <xpert@XFree86.org>; Wed, 6 Mar 2002 13:26:27 -0800 (PST)
Date: Wed, 6 Mar 2002 13:22:38 -0800 (PST)
From: Mark Vojkovich <mvojkovich@nvidia.com>
To: xpert@xfree86.org
Message-Id: <Pine.LNX.4.21.0203061319330.14675-200000@dhcp-197-155.nvidia.com>
Mime-Version: 1.0
Content-Type: MULTIPART/MIXED; BOUNDARY="279747525-2078168853-1015449758=:14675"
Subject: [Xpert]New extension for keeping track of client resources
Sender: owner-xpert@XFree86.Org
Errors-To: owner-xpert@XFree86.Org
X-Beenthere: xpert@XFree86.Org
X-Mailman-Version: 2.0beta2
Precedence: bulk
List-Id: General X Discussion <xpert.XFree86.Org>
Status:   
   I've commited a new extension to CVS.  It's called "X-Resource"
and it lets you query how many clients are currently running and
how many of each type of resource they have.

   I've attached a simple client.


				Mark.

-------------------------------------------------------



-- 
					Guillaume.
					http://www.telegraph-road.org

["restest.c" (text/x-c)]

/*
     gcc -o restest -Wall restest.c -L/usr/X11R6/lib -lX11 -lXext -lXRes
*/


#include <X11/X.h>
#include <X11/Xlib.h>
#include <X11/extensions/XRes.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>


int main(void)
{
    Display *TheDisplay;
    int event, error, major, minor, num_clients, i, j, num_types;
    XResClient *clients;
    XResType *types;
    char *name;

    TheDisplay = XOpenDisplay(0);

    if(!XResQueryExtension(TheDisplay, &event, &error)) {
        printf("XResQueryExtension failed\n");
        return 1;
    }

    if(!XResQueryVersion(TheDisplay, &major, &minor)) {
        printf("XResQueryVersion failed\n");
        return 1;
    } else {
        printf("X-Resource extension version %i.%i\n", major, minor);
    }

    XGrabServer(TheDisplay);

    XResQueryClients(TheDisplay, &num_clients, &clients);
 
    printf("There are %i clients\n", num_clients);
    for(i = 0; i < num_clients; i++) {
       XResQueryClientResources(TheDisplay, clients[i].resource_base,
                                &num_types, &types);

       printf("Client %i (base = 0x%x, mask = 0x%x): %i resource types\n", i,
                                        clients[i].resource_base,
                                        clients[i].resource_mask, num_types);

       for(j = 0; j < num_types; j++) {
          name = XGetAtomName(TheDisplay, types[j].resource_type);
          printf("   %s: %i\n", name, types[j].count);
          XFree(name);
       }

       XFree(types);
    }

    XUngrabServer(TheDisplay);

    XFree(clients);
     
    XCloseDisplay(TheDisplay);

    return 0;
}




[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic