*** ../xperfmon++/StripChart.c Wed Jul 27 22:29:30 1994 --- ./StripChart.c Thu Apr 30 15:03:27 1998 *************** *** 53,58 **** --- 53,70 ---- #include #include #include "StripCharP.h" + + #ifdef HAVE_SYS_PARAM_H + #include + #endif + + #if (defined(BSD) && (BSD >= 199506)) + # include + #else + # error You have to use at least a FreeBSD 2.2.X system + #endif + + # include "system.h" #include #define MS_PER_SEC 100 *************** *** 108,114 **** }; #undef offset ! #define LABEL_ROOM 100 static void Initialize(), Destroy(), Redisplay(), MoveChart(), SetPoints(); static Boolean SetValues(); static int repaint_window(); --- 120,130 ---- }; #undef offset ! #if (defined(BSD) && (BSD >= 199306)) ! # define LABEL_ROOM 80 ! #else ! # define LABEL_ROOM 100 ! #endif static void Initialize(), Destroy(), Redisplay(), MoveChart(), SetPoints(); static Boolean SetValues(); static int repaint_window(); *************** *** 215,222 **** --- 231,253 ---- static void Initialize (greq, gnew) Widget greq, gnew; { + int i; + PerfChartWidget w = (PerfChartWidget)gnew; + /* + * XXX The missing initializations have been made obvious by FreeBSD 2.2's + * new (`phk') malloc that doesn't initialize the malloc'ed areas to 0. + * Perhaps more bogons will lurk around, but the floating arithmetic ones + * have been the most annoying ones since they most likely cause a trap + * at startup time. + * + * Strange that people in the 90's still rely on malloc() + * returning an initialized region. + */ + for ( i = 0; i < NUM_VALUES; i++ ) + w->strip_chart.valuedata[i] = 0.0; + /* if we are working with a mono screen then turn off all warnings and alarms */ if ( mono_screen ) { *************** *** 343,361 **** if ( checkValue >= w->strip_chart.highAlarm ) { /* check for high alarm */ if ( w->strip_chart.currentBG != w->strip_chart.alarmColor ) { ! XtVaSetValues(w, XtNbackground, w->strip_chart.alarmColor, NULL ); w->strip_chart.currentBG = w->strip_chart.alarmColor; } } else if ( checkValue >= w->strip_chart.highWarn ) { /* check for high warning */ if ( w->strip_chart.currentBG != w->strip_chart.warnColor ) { ! XtVaSetValues(w, XtNbackground, w->strip_chart.warnColor, NULL ); w->strip_chart.currentBG = w->strip_chart.warnColor; } } else { if ( w->strip_chart.currentBG != w->strip_chart.okColor ) { /* reset to okColor? */ ! XtVaSetValues(w, XtNbackground, w->strip_chart.okColor, NULL ); w->strip_chart.currentBG = w->strip_chart.okColor; } } --- 374,392 ---- if ( checkValue >= w->strip_chart.highAlarm ) { /* check for high alarm */ if ( w->strip_chart.currentBG != w->strip_chart.alarmColor ) { ! XtVaSetValues((Widget)w, XtNbackground, w->strip_chart.alarmColor, NULL ); w->strip_chart.currentBG = w->strip_chart.alarmColor; } } else if ( checkValue >= w->strip_chart.highWarn ) { /* check for high warning */ if ( w->strip_chart.currentBG != w->strip_chart.warnColor ) { ! XtVaSetValues((Widget)w, XtNbackground, w->strip_chart.warnColor, NULL ); w->strip_chart.currentBG = w->strip_chart.warnColor; } } else { if ( w->strip_chart.currentBG != w->strip_chart.okColor ) { /* reset to okColor? */ ! XtVaSetValues((Widget)w, XtNbackground, w->strip_chart.okColor, NULL ); w->strip_chart.currentBG = w->strip_chart.okColor; } } *************** *** 373,391 **** if ( checkValue <= w->strip_chart.lowAlarm ) { /* check for low alarm */ if ( w->strip_chart.currentBG != w->strip_chart.alarmColor ) { ! XtVaSetValues(w, XtNbackground, w->strip_chart.alarmColor, NULL ); w->strip_chart.currentBG = w->strip_chart.alarmColor; } } else if ( checkValue <= w->strip_chart.lowWarn ) { /* check for low warning */ if ( w->strip_chart.currentBG != w->strip_chart.warnColor ) { ! XtVaSetValues(w, XtNbackground, w->strip_chart.warnColor, NULL ); w->strip_chart.currentBG = w->strip_chart.warnColor; } } else { if ( w->strip_chart.currentBG != w->strip_chart.okColor ) { /* reset to okColor? */ ! XtVaSetValues(w, XtNbackground, w->strip_chart.okColor, NULL ); w->strip_chart.currentBG = w->strip_chart.okColor; } } --- 404,422 ---- if ( checkValue <= w->strip_chart.lowAlarm ) { /* check for low alarm */ if ( w->strip_chart.currentBG != w->strip_chart.alarmColor ) { ! XtVaSetValues((Widget)w, XtNbackground, w->strip_chart.alarmColor, NULL ); w->strip_chart.currentBG = w->strip_chart.alarmColor; } } else if ( checkValue <= w->strip_chart.lowWarn ) { /* check for low warning */ if ( w->strip_chart.currentBG != w->strip_chart.warnColor ) { ! XtVaSetValues((Widget)w, XtNbackground, w->strip_chart.warnColor, NULL ); w->strip_chart.currentBG = w->strip_chart.warnColor; } } else { if ( w->strip_chart.currentBG != w->strip_chart.okColor ) { /* reset to okColor? */ ! XtVaSetValues((Widget)w, XtNbackground, w->strip_chart.okColor, NULL ); w->strip_chart.currentBG = w->strip_chart.okColor; } } *************** *** 448,455 **** /* Compute the minimum scale required to graph the data, but don't go lower than min_scale. */ ! if (w->strip_chart.interval != 0 || scale <= (int)w->strip_chart.max_value) scale = ((int) (w->strip_chart.max_value)) + 1; if (scale < w->strip_chart.min_scale) scale = w->strip_chart.min_scale; --- 479,493 ---- /* Compute the minimum scale required to graph the data, but don't go lower than min_scale. */ ! ! if (w->strip_chart.interval != 0 || scale <= (int)w->strip_chart.max_value) { ! #if (defined(BSD) && (BSD >= 199306)) ! if (strcmp(w->strip_chart.botLabel, botNames[FREE_MEM]) != 0 || w->strip_chart.max_value == 100) scale = ((int) (w->strip_chart.max_value)) + 1; + #else + scale = ((int) (w->strip_chart.max_value)) + 1; + #endif + } if (scale < w->strip_chart.min_scale) scale = w->strip_chart.min_scale; *************** *** 479,490 **** /* draw titles */ if ( w->strip_chart.topLabel ) { ! y = w->core.height/2; x = 4; XDS(w->strip_chart.topLabel); } if ( w->strip_chart.botLabel ) { ! y = (w->core.height/2) + w->strip_chart.font_height; x = 4; XDS(w->strip_chart.botLabel); } --- 517,528 ---- /* draw titles */ if ( w->strip_chart.topLabel ) { ! y = w->core.height/2 - 2; x = 4; XDS(w->strip_chart.topLabel); } if ( w->strip_chart.botLabel ) { ! y = (w->core.height/2 - 2) + w->strip_chart.font_height; x = 4; XDS(w->strip_chart.botLabel); } *** ../xperfmon++/TimeChart.c Wed Jul 27 22:29:31 1994 --- ./TimeChart.c Thu Apr 30 15:03:27 1998 *************** *** 47,52 **** --- 47,62 ---- * Moffett Field, California, rsmith@proteus.arc.nasa.gov ******************************************************************/ + #ifdef HAVE_SYS_PARAM_H + #include + #endif + + #if (defined(BSD) && (BSD >= 199506)) + # include + #else + # error You have to use at least a FreeBSD 2.2.X system + #endif + #include #include #include *** ../xperfmon++/misc.c Wed Jul 27 22:29:33 1994 --- ./misc.c Thu Apr 30 15:03:27 1998 *************** *** 22,27 **** --- 22,38 ---- * Author: Roger Smith, Sterling Software @ NASA-Ames Research Center * Moffett Field, California, rsmith@proteus.arc.nasa.gov */ + + #ifdef HAVE_SYS_PARAM_H + #include + #endif + + #if (defined(BSD) && (BSD >= 199506)) + # include + #else + # error You have to use at least a FreeBSD 2.2.X system + #endif + #include #include *************** *** 58,64 **** int i, keycode, length = 0; /* PerfmonWidget pw = (PerfmonWidget) w;*/ ! length = XLookupString(event, strbuf, STRBUFSIZE, &keycode, NULL); switch (keycode) { case 'Q': case 'q': --- 69,75 ---- int i, keycode, length = 0; /* PerfmonWidget pw = (PerfmonWidget) w;*/ ! length = XLookupString((XKeyEvent *)event, strbuf, STRBUFSIZE, (KeySym *)&keycode, NULL); switch (keycode) { case 'Q': case 'q': *** ../xperfmon++/xperfmon.c Wed Jul 27 22:29:39 1994 --- ./xperfmon.c Thu Aug 13 18:59:02 1998 *************** *** 58,63 **** --- 58,73 ---- * */ + #ifdef HAVE_SYS_PARAM_H + #include + #endif + + #if (defined(BSD) && (BSD >= 199506)) + # include + #else + # error You have to use at least a FreeBSD 2.2.X system + #endif + #include #include #include *************** *** 76,82 **** --- 86,97 ---- extern void start_graphs(); extern time_t timeStamp; extern Dimension oldHeight, oldWidth; + + #if __FreeBSD_version >= 220000 + extern float current_values[NUM_GRAPHS]; + #else extern int current_values[NUM_GRAPHS]; + #endif char *gprogname; double testValue; *************** *** 94,99 **** --- 109,119 ---- { NULL, NULL }, }; + /* LK!!! */ + int MIN_HEIGHT=420; + #define MIN_WIDTH 185 + #define GRAPH_MIN_HEIGHT 28 + #define XtNinterval "interval" #define XtNcount "count" #define XtCCount "Count" *************** *** 101,120 **** #define XtCFill "Fill" #define XtNfast "fast" #define XtCFast "Fast" - #define XtNstufAdd "stufAdd" - #define XtCStufAdd "StufAdd" - #define XtNstufSub "stufSub" - #define XtCStufSub "StufSub" #define XtNdebug "debug" #define XtCDebug "Debug" #define XtNusercpuAdd "usercpuAdd" #define XtCUsercpuAdd "UsercpuAdd" #define XtNusercpuSub "usercpuSub" #define XtCUsercpuSub "UsercpuSub" #define XtNsystemcpuAdd "systemcpuAdd" #define XtCSystemcpuAdd "SystemcpuAdd" #define XtNsystemcpuSub "systemcpuSub" #define XtCSystemcpuSub "SystemcpuSub" #define XtNidlecpuAdd "idlecpuAdd" #define XtCIdlecpuAdd "IdlecpuAdd" #define XtNidlecpuSub "idlecpuSub" --- 121,154 ---- #define XtCFill "Fill" #define XtNfast "fast" #define XtCFast "Fast" #define XtNdebug "debug" #define XtCDebug "Debug" + #if __FreeBSD_version >= 220000 + #define XtNsysloadAdd "sysloadAdd" + #define XtCSysloadAdd "SysloadAdd" + #define XtNsysloadSub "sysloadSub" + #define XtCSysloadSub "SysloadSub" + #endif #define XtNusercpuAdd "usercpuAdd" #define XtCUsercpuAdd "UsercpuAdd" #define XtNusercpuSub "usercpuSub" #define XtCUsercpuSub "UsercpuSub" + #if __FreeBSD_version >= 220000 + #define XtNnicecpuAdd "nicecpuAdd" + #define XtCNicecpuAdd "NicecpuAdd" + #define XtNnicecpuSub "nicecpuSub" + #define XtCNicecpuSub "NicecpuSub" + #endif #define XtNsystemcpuAdd "systemcpuAdd" #define XtCSystemcpuAdd "SystemcpuAdd" #define XtNsystemcpuSub "systemcpuSub" #define XtCSystemcpuSub "SystemcpuSub" + #if __FreeBSD_version >= 220000 + #define XtNintercpuAdd "intercpuAdd" + #define XtCIntercpuAdd "IntercpuAdd" + #define XtNintercpuSub "intercpuSub" + #define XtCIntercpuSub "IntercpuSub" + #endif #define XtNidlecpuAdd "idlecpuAdd" #define XtCIdlecpuAdd "IdlecpuAdd" #define XtNidlecpuSub "idlecpuSub" *************** *** 171,192 **** static XrmOptionDescRec optionDescList[] = { { "-interval", ".interval", XrmoptionSepArg, (caddr_t) NULL}, { "-immediate", "*PerfChart.immediate", XrmoptionNoArg, "True" }, ! { "-lowmemAlarm", "*perfChartFree.lowAlarm", XrmoptionSepArg, NULL }, { "-lowmemWarn", "*perfChartFree.lowWarn", XrmoptionSepArg, NULL }, { "-highmemAlarm", "*perfChartFree.highAlarm", XrmoptionSepArg, NULL }, { "-highmemWarn", "*perfChartFree.highWarn", XrmoptionSepArg, NULL }, ! { "-lowuserAlarm", "*perfChartUser.lowAlarm", XrmoptionSepArg, NULL }, { "-lowuserWarn", "*perfChartUser.lowWarn", XrmoptionSepArg, NULL }, { "-highuserAlarm", "*perfChartUser.highAlarm", XrmoptionSepArg, NULL }, { "-highuserWarn", "*perfChartUser.highWarn", XrmoptionSepArg, NULL }, { "-lowsysAlarm", "*perfChartSystem.lowAlarm", XrmoptionSepArg, NULL }, { "-lowsysWarn", "*perfChartSystem.lowWarn", XrmoptionSepArg, NULL }, { "-highsysAlarm", "*perfChartSystem.highAlarm", XrmoptionSepArg, NULL }, { "-highsysWarn", "*perfChartSystem.highWarn", XrmoptionSepArg, NULL }, { "-lowidleAlarm", "*perfChartIdle.lowAlarm", XrmoptionSepArg, NULL }, { "-lowidleWarn", "*perfChartIdle.lowWarn", XrmoptionSepArg, NULL }, { "-highidleAlarm", "*perfChartIdle.highAlarm", XrmoptionSepArg, NULL }, --- 205,250 ---- static XrmOptionDescRec optionDescList[] = { { "-interval", ".interval", XrmoptionSepArg, (caddr_t) NULL}, { "-immediate", "*PerfChart.immediate", XrmoptionNoArg, "True" }, ! #if __FreeBSD_version >= 220000 ! { "-lowloadAlarm", "*perfChartLoad.lowAlarm", XrmoptionSepArg, NULL }, ! { "-lowloadWarn", "*perfChartLoad.lowWarn", XrmoptionSepArg, NULL }, ! { "-highloadAlarm", "*perfChartLoad.highAlarm", XrmoptionSepArg, NULL }, ! { "-highloadWarn", "*perfChartLoad.highWarn", XrmoptionSepArg, NULL }, ! ! { "-lowswapAlarm", "*perfChartSwap.lowAlarm", XrmoptionSepArg, NULL }, ! { "-lowswapWarn", "*perfChartSwap.lowWarn", XrmoptionSepArg, NULL }, ! { "-highswapAlarm", "*perfChartSwap.highAlarm", XrmoptionSepArg, NULL }, ! { "-highswapWarn", "*perfChartSwap.highWarn", XrmoptionSepArg, NULL }, ! #else { "-lowmemAlarm", "*perfChartFree.lowAlarm", XrmoptionSepArg, NULL }, { "-lowmemWarn", "*perfChartFree.lowWarn", XrmoptionSepArg, NULL }, { "-highmemAlarm", "*perfChartFree.highAlarm", XrmoptionSepArg, NULL }, { "-highmemWarn", "*perfChartFree.highWarn", XrmoptionSepArg, NULL }, ! #endif { "-lowuserAlarm", "*perfChartUser.lowAlarm", XrmoptionSepArg, NULL }, { "-lowuserWarn", "*perfChartUser.lowWarn", XrmoptionSepArg, NULL }, { "-highuserAlarm", "*perfChartUser.highAlarm", XrmoptionSepArg, NULL }, { "-highuserWarn", "*perfChartUser.highWarn", XrmoptionSepArg, NULL }, + #if __FreeBSD_version >= 220000 + { "-lowniceAlarm", "*perfChartNice.lowAlarm", XrmoptionSepArg, NULL }, + { "-lowniceWarn", "*perfChartNice.lowWarn", XrmoptionSepArg, NULL }, + { "-highniceAlarm", "*perfChartNice.highAlarm", XrmoptionSepArg, NULL }, + { "-highniceWarn", "*perfChartNice.highWarn", XrmoptionSepArg, NULL }, + #endif + { "-lowsysAlarm", "*perfChartSystem.lowAlarm", XrmoptionSepArg, NULL }, { "-lowsysWarn", "*perfChartSystem.lowWarn", XrmoptionSepArg, NULL }, { "-highsysAlarm", "*perfChartSystem.highAlarm", XrmoptionSepArg, NULL }, { "-highsysWarn", "*perfChartSystem.highWarn", XrmoptionSepArg, NULL }, + #if __FreeBSD_version >= 220000 + { "-lowinterAlarm", "*perfChartInter.lowAlarm", XrmoptionSepArg, NULL }, + { "-lowinterWarn", "*perfChartInter.lowWarn", XrmoptionSepArg, NULL }, + { "-highinterAlarm", "*perfChartInter.highAlarm", XrmoptionSepArg, NULL }, + { "-highinterWarn", "*perfChartInter.highWarn", XrmoptionSepArg, NULL }, + #endif + { "-lowidleAlarm", "*perfChartIdle.lowAlarm", XrmoptionSepArg, NULL }, { "-lowidleWarn", "*perfChartIdle.lowWarn", XrmoptionSepArg, NULL }, { "-highidleAlarm", "*perfChartIdle.highAlarm", XrmoptionSepArg, NULL }, *************** *** 231,244 **** --- 289,319 ---- { "-fill", "*fill", XrmoptionNoArg, "True" }, { "-debug", "*debug", XrmoptionNoArg, "True" }, { "-fast", "*fast", XrmoptionNoArg, (XtPointer)"True" }, + #if __FreeBSD_version >= 220000 + { "-sysload", XtNsysloadSub, XrmoptionNoArg, "True" }, + { "+sysload", XtNsysloadAdd, XrmoptionNoArg, "TRUE" }, + #endif { "-usercpu", XtNusercpuSub, XrmoptionNoArg, "True" }, { "+usercpu", XtNusercpuAdd, XrmoptionNoArg, "TRUE" }, + #if __FreeBSD_version >= 220000 + { "-nicecpu", XtNnicecpuSub, XrmoptionNoArg, "True" }, + { "+nicecpu", XtNnicecpuAdd, XrmoptionNoArg, "TRUE" }, + #endif { "-systemcpu", XtNsystemcpuSub, XrmoptionNoArg, "True" }, { "+systemcpu", XtNsystemcpuAdd, XrmoptionNoArg, "TRUE" }, + #if __FreeBSD_version >= 220000 + { "-intercpu", XtNintercpuSub, XrmoptionNoArg, "True" }, + { "+intercpu", XtNintercpuAdd, XrmoptionNoArg, "TRUE" }, + #endif { "-idlecpu", XtNidlecpuSub, XrmoptionNoArg, "True" }, { "+idlecpu", XtNidlecpuAdd, XrmoptionNoArg, "TRUE" }, + #if __FreeBSD_version >= 220000 + { "-freeswap", XtNfreememSub, XrmoptionNoArg, "True" }, + { "+freeswap", XtNfreememAdd, XrmoptionNoArg, "TRUE" }, + #else { "-freemem", XtNfreememSub, XrmoptionNoArg, "True" }, { "+freemem", XtNfreememAdd, XrmoptionNoArg, "TRUE" }, + #endif { "-diskxfr", XtNdiskxfrSub, XrmoptionNoArg, "True" }, { "+diskxfr", XtNdiskxfrAdd, XrmoptionNoArg, "TRUE" }, { "-interrupts", XtNinterruptsSub , XrmoptionNoArg, "True" }, *************** *** 253,269 **** { "+nfsclient", XtNnfsclientAdd, XrmoptionNoArg, "TRUE" }, { "-nfsserver", XtNnfsserverSub, XrmoptionNoArg, "True" }, { "+nfsserver", XtNnfsserverAdd, XrmoptionNoArg, "TRUE" }, - { "-stuf", XtNstufAdd, XrmoptionNoArg, (XtPointer)"True" }, - { "+stuf", XtNstufSub, XrmoptionNoArg, (XtPointer)"True" }, }; /* Application Resource List - no particular widget */ static XtResource resources[] = { - { XtNstufAdd, XtCStufAdd, XtRBool, sizeof(Bool), - XtOffsetOf(AppData, addG[1]), XtRImmediate, (XtPointer) NULL }, - { XtNstufSub, XtCStufSub, XtRBool, sizeof(Bool), - XtOffsetOf(AppData, subG[0]), XtRImmediate, (XtPointer) NULL }, { XtNinterval, XtCInterval, XtRInt, sizeof(int), XtOffsetOf(AppData, interval), XtRImmediate, (caddr_t) DEF_INTERVAL }, { XtNcount, XtCCount, XtRInt, sizeof(int), --- 328,338 ---- *************** *** 274,288 **** XtOffsetOf(AppData, debug), XtRImmediate, (caddr_t)NULL }, { XtNfast, XtCFast, XtRBoolean, sizeof(Boolean), XtOffsetOf(AppData, fast), XtRImmediate, (XtPointer) NULL }, ! { XtNusercpuAdd, XtCUsercpuAdd, XtRBool, sizeof(Bool), XtOffsetOf(AppData, addG[USR_CPU]), XtRImmediate, (XtPointer) NULL }, { XtNusercpuSub, XtCUsercpuSub, XtRBool, sizeof(Bool), XtOffsetOf(AppData, subG[USR_CPU]), XtRImmediate, (XtPointer) NULL }, { XtNsystemcpuAdd, XtCSystemcpuAdd, XtRBool, sizeof(Bool), XtOffsetOf(AppData, addG[SYS_CPU]), XtRImmediate, (XtPointer) NULL }, { XtNsystemcpuSub, XtCSystemcpuSub, XtRBool, sizeof(Bool), XtOffsetOf(AppData, subG[SYS_CPU]), XtRImmediate, (XtPointer) NULL }, { XtNidlecpuAdd, XtCIdlecpuAdd, XtRBool, sizeof(Bool), XtOffsetOf(AppData, addG[IDL_CPU]), XtRImmediate, (XtPointer) NULL }, { XtNidlecpuSub, XtCIdlecpuSub, XtRBool, sizeof(Bool), --- 343,374 ---- XtOffsetOf(AppData, debug), XtRImmediate, (caddr_t)NULL }, { XtNfast, XtCFast, XtRBoolean, sizeof(Boolean), XtOffsetOf(AppData, fast), XtRImmediate, (XtPointer) NULL }, ! #if __FreeBSD_version >= 220000 ! { XtNsysloadAdd, XtCSysloadAdd, XtRBool, sizeof(Bool), ! XtOffsetOf(AppData, addG[SYS_LOAD]), XtRImmediate, (XtPointer) NULL }, ! { XtNsysloadSub, XtCSysloadSub, XtRBool, sizeof(Bool), ! XtOffsetOf(AppData, subG[SYS_LOAD]), XtRImmediate, (XtPointer) NULL }, ! #endif { XtNusercpuAdd, XtCUsercpuAdd, XtRBool, sizeof(Bool), XtOffsetOf(AppData, addG[USR_CPU]), XtRImmediate, (XtPointer) NULL }, { XtNusercpuSub, XtCUsercpuSub, XtRBool, sizeof(Bool), XtOffsetOf(AppData, subG[USR_CPU]), XtRImmediate, (XtPointer) NULL }, + #if __FreeBSD_version >= 220000 + { XtNnicecpuAdd, XtCNicecpuAdd, XtRBool, sizeof(Bool), + XtOffsetOf(AppData, addG[NICE_CPU]), XtRImmediate, (XtPointer) NULL }, + { XtNnicecpuSub, XtCNicecpuSub, XtRBool, sizeof(Bool), + XtOffsetOf(AppData, subG[NICE_CPU]), XtRImmediate, (XtPointer) NULL }, + #endif { XtNsystemcpuAdd, XtCSystemcpuAdd, XtRBool, sizeof(Bool), XtOffsetOf(AppData, addG[SYS_CPU]), XtRImmediate, (XtPointer) NULL }, { XtNsystemcpuSub, XtCSystemcpuSub, XtRBool, sizeof(Bool), XtOffsetOf(AppData, subG[SYS_CPU]), XtRImmediate, (XtPointer) NULL }, + #if __FreeBSD_version >= 220000 + { XtNintercpuAdd, XtCIntercpuAdd, XtRBool, sizeof(Bool), + XtOffsetOf(AppData, addG[INT_CPU]), XtRImmediate, (XtPointer) NULL }, + { XtNintercpuSub, XtCIntercpuSub, XtRBool, sizeof(Bool), + XtOffsetOf(AppData, subG[INT_CPU]), XtRImmediate, (XtPointer) NULL }, + #endif { XtNidlecpuAdd, XtCIdlecpuAdd, XtRBool, sizeof(Bool), XtOffsetOf(AppData, addG[IDL_CPU]), XtRImmediate, (XtPointer) NULL }, { XtNidlecpuSub, XtCIdlecpuSub, XtRBool, sizeof(Bool), *************** *** 324,329 **** --- 410,418 ---- void usage() { + #if __FreeBSD_version >= 220000 + fprintf(stderr, "\nxperfmon++ V2.0 for FreeBSD-2.2.X and 3.X\n"); + #endif fprintf(stderr, "\nusage: xperfmon++ option option option .....\n"); fprintf(stderr, "options:\n"); fprintf(stderr, " [-display [{host}]:[{vs}]]\n"); *************** *** 340,350 **** fprintf(stderr, " [-fast] (changes interval from seconds to milliseconds)\n"); fprintf(stderr, " [-immediate] (background limit alarm color is based on current sample)\n"); fprintf(stderr, " [-fill] (output filled graph instead of line graph)\n\n"); ! fprintf(stderr, " [{-+}usercpu] ({remove|add} usercpu to list of graphs\n"); fprintf(stderr, " [{-+}systemcpu] ({remove|add} systemcpu to list of graphs\n"); fprintf(stderr, " [{-+}idlecpu] ({remove|add} idlecpu to list of graphs\n"); fprintf(stderr, " [{-+}freemem] ({remove|add} freemem to list of graphs\n"); fprintf(stderr, " [{-+}diskxfr] ({remove|add} disk transfers to list of graphs\n"); fprintf(stderr, " [{-+}interrupts] ({remove|add} interrupts to list of graphs\n"); fprintf(stderr, " [{-+}inputpkts] ({remove|add} input packets to list of graphs\n"); --- 429,451 ---- fprintf(stderr, " [-fast] (changes interval from seconds to milliseconds)\n"); fprintf(stderr, " [-immediate] (background limit alarm color is based on current sample)\n"); fprintf(stderr, " [-fill] (output filled graph instead of line graph)\n\n"); ! #if __FreeBSD_version >= 220000 ! fprintf(stderr, " [{-+}sysload] ({remove|add} sysload to list of graphs\n"); ! #endif fprintf(stderr, " [{-+}usercpu] ({remove|add} usercpu to list of graphs\n"); + #if __FreeBSD_version >= 220000 + fprintf(stderr, " [{-+}nicecpu] ({remove|add} nicecpu to list of graphs\n"); + #endif fprintf(stderr, " [{-+}systemcpu] ({remove|add} systemcpu to list of graphs\n"); + #if __FreeBSD_version >= 220000 + fprintf(stderr, " [{-+}intercpu] ({remove|add} intercpu to list of graphs\n"); + #endif fprintf(stderr, " [{-+}idlecpu] ({remove|add} idlecpu to list of graphs\n"); + #if __FreeBSD_version >= 220000 + fprintf(stderr, " [{-+}freeswap] ({remove|add} freeswap to list of graphs\n"); + #else fprintf(stderr, " [{-+}freemem] ({remove|add} freemem to list of graphs\n"); + #endif fprintf(stderr, " [{-+}diskxfr] ({remove|add} disk transfers to list of graphs\n"); fprintf(stderr, " [{-+}interrupts] ({remove|add} interrupts to list of graphs\n"); fprintf(stderr, " [{-+}inputpkts] ({remove|add} input packets to list of graphs\n"); *************** *** 361,370 **** fprintf(stderr, " [-high*Alarm {value}] ( Set High Alarm value for *)\n"); fprintf(stderr, " [-high*Warn {value}] ( Set High Warning value for *)\n"); fprintf(stderr, " Where \"*\" is one of the following:\n"); fprintf(stderr, " [mem | user | sys | idle | disk | intrpts |\n"); ! fprintf(stderr, " input | output | collision | nfsclient | nfsserver]\n"); fprintf(stderr, " For Example:\n"); fprintf(stderr, " [-lowmemAlarm {value}] ( Set low Free Memory Alarm Value)\n"); fprintf(stderr, "WARNING: It is an error condition to set both a high, and a low, limit warning or alarm.\n"); exit(1); } --- 462,479 ---- fprintf(stderr, " [-high*Alarm {value}] ( Set High Alarm value for *)\n"); fprintf(stderr, " [-high*Warn {value}] ( Set High Warning value for *)\n"); fprintf(stderr, " Where \"*\" is one of the following:\n"); + #if __FreeBSD_version >= 220000 + fprintf(stderr, " [load | user | nice | sys | inter | idle | swap | disk |\n"); + #else fprintf(stderr, " [mem | user | sys | idle | disk | intrpts |\n"); ! #endif ! fprintf(stderr, " intrpts | input | output | collision | nfsclient | nfsserver]\n"); fprintf(stderr, " For Example:\n"); + #if __FreeBSD_version >= 220000 + fprintf(stderr, " [-lowswapAlarm {value}] ( Set low Free Swap Alarm Value)\n"); + #else fprintf(stderr, " [-lowmemAlarm {value}] ( Set low Free Memory Alarm Value)\n"); + #endif fprintf(stderr, "WARNING: It is an error condition to set both a high, and a low, limit warning or alarm.\n"); exit(1); } *************** *** 386,391 **** --- 495,501 ---- time(&timeStamp); return; } + /*ARGSUSED*/ void handleResize( w, unused, event, contin2disp ) Widget w; *************** *** 394,400 **** Boolean *contin2disp; { Dimension neww, newh; ! int i; char eventString[60]; switch (event->type) { case Expose: --- 504,511 ---- Boolean *contin2disp; { Dimension neww, newh; ! Dimension hOverHead, boxH, timeH, newWidgetH; ! int i, window_size_changed; char eventString[60]; switch (event->type) { case Expose: *************** *** 403,415 **** strcpy(eventString,"expose"); break; case MapNotify: ! neww=0; ! newh=0; strcpy(eventString,"map notify"); break; case ReparentNotify: ! neww=0; ! newh=0; strcpy(eventString,"reparent"); break; case ConfigureNotify: --- 514,531 ---- strcpy(eventString,"expose"); break; case MapNotify: ! neww=w->core.width; ! newh=oldHeight; strcpy(eventString,"map notify"); break; + case UnmapNotify: + neww=w->core.width; + newh=oldHeight; + strcpy(eventString,"unmap notify"); + break; case ReparentNotify: ! neww=w->core.width; ! newh=oldHeight; strcpy(eventString,"reparent"); break; case ConfigureNotify: *************** *** 417,429 **** newh=event->xconfigure.height; strcpy(eventString,"configure"); break; } ! if ( neww < 250 + 10 ) { ! neww = 250 + 10; ! w->core.width = 250 + 10; XtResizeWindow(w); ! } if ( appData.debug ) printf("Resize Request: type=%d %s, oldw=%hu, oldh=%hu, neww=%hu, newh=%hu\n", (int)event->type, eventString, --- 533,567 ---- newh=event->xconfigure.height; strcpy(eventString,"configure"); break; + } + if ( neww < MIN_WIDTH ) { + neww = MIN_WIDTH; + w->core.width = MIN_WIDTH; + window_size_changed = TRUE; + } else { + w->core.width = neww; + } + + if ( newh < MIN_HEIGHT ) { + newh = MIN_HEIGHT; + w->core.height = MIN_HEIGHT; + window_size_changed = TRUE; + } + + /* Now the graphs fit perfect into the window! */ + hOverHead = (5.6 * appData.numGraphsOn) - (6 / appData.numGraphsOn); + boxH = labelBox->core.height; + timeH = timechart->core.height; + newWidgetH = (newh - (boxH+7) - (timeH+10) - hOverHead) / appData.numGraphsOn; + w->core.height = newWidgetH * appData.numGraphsOn + hOverHead + (boxH+7) + (timeH+10); + if(w->core.height != newh) { + newh = w->core.height; } ! ! if( neww != oldWidth || newh != oldHeight || window_size_changed == TRUE ) XtResizeWindow(w); ! if ( appData.debug ) printf("Resize Request: type=%d %s, oldw=%hu, oldh=%hu, neww=%hu, newh=%hu\n", (int)event->type, eventString, *************** *** 431,441 **** neww, newh); if ( event->type == ConfigureNotify ) { ! /* Dimension h = perfmon[0]->core.height;*/ ! Dimension hOverHead = 5 * appData.numGraphsOn; ! Dimension boxH = labelBox->core.height; ! Dimension timeH = timechart->core.height; ! Dimension newWidgetH = (newh - (boxH+8) - (timeH+10) - hOverHead) / appData.numGraphsOn; if ( oldWidth == neww && oldHeight == newh ) return; if ( appData.debug ) --- 569,575 ---- neww, newh); if ( event->type == ConfigureNotify ) { ! if ( oldWidth == neww && oldHeight == newh ) return; if ( appData.debug ) *************** *** 455,460 **** --- 589,595 ---- XFlush(XtDisplay(w)); } + oldWidth = neww+=10, oldHeight = newh; return; } *************** *** 464,472 **** int argc; char **argv; { Arg arg; Pixmap icon_pixmap = None; ! Widget loadParent, pappaBox; char *progname = argv[0]; Bool foundAnAdd = FALSE; --- 599,611 ---- int argc; char **argv; { + /* LK!!! */ + Dimension timeH, newWidgetW, newWidgetH, hOverHead, boxH; + unsigned int w, h; + Arg arg; Pixmap icon_pixmap = None; ! Widget pappaBox; char *progname = argv[0]; Bool foundAnAdd = FALSE; *************** *** 478,483 **** --- 617,626 ---- optionDescList, XtNumber(optionDescList), &argc, argv, NULL, NULL); + + appData.toplevel->core.width=MIN_WIDTH; + appData.toplevel->core.height=MIN_HEIGHT; + if (argc != 1) usage(); if ( appData.toplevel->core.depth == 1 ) *************** *** 540,561 **** xperfmon_width, xperfmon_height)); XtSetValues(appData.toplevel, &arg, 1); } - /* create windows */ pappaBox = XtVaCreateManagedWidget("PappaBox", boxWidgetClass, appData.toplevel, XtNborderWidth, 0, NULL); - XtOverrideTranslations(pappaBox, XtParseTranslationTable(defaultTranslations)); (void)gethostname(hostname, sizeof(hostname)); c = (char *) ((long) &hostname[0] + (int) strlen(hostname)); sprintf(c, "\nUpdate Interval = %5.1f secs", (float)(appData.interval*appData.ms_per_sec)/1000.0); labelBox = XtVaCreateManagedWidget("LabelBox", labelWidgetClass, pappaBox, ! XtNwidth, 250, ! /* XtNheight, 16,*/ XtNjustify, XtJustifyLeft, XtNinternalHeight, 0, XtNtop, XtChainTop, --- 683,734 ---- xperfmon_width, xperfmon_height)); XtSetValues(appData.toplevel, &arg, 1); } /* create windows */ pappaBox = XtVaCreateManagedWidget("PappaBox", boxWidgetClass, appData.toplevel, XtNborderWidth, 0, NULL); XtOverrideTranslations(pappaBox, XtParseTranslationTable(defaultTranslations)); (void)gethostname(hostname, sizeof(hostname)); c = (char *) ((long) &hostname[0] + (int) strlen(hostname)); sprintf(c, "\nUpdate Interval = %5.1f secs", (float)(appData.interval*appData.ms_per_sec)/1000.0); + { /* LK!!! handle -geometry option correct, also small changes in handleResize */ + Window rwin; + int x,y,px,py; + unsigned int pw,ph,bw,d; + + XtRealizeWidget(appData.toplevel); + + XGetGeometry(XtDisplay(appData.toplevel),XtWindow(appData.toplevel), + &rwin,&x,&y,&w,&h,&bw,&d); + + if ( w > MIN_WIDTH) { + newWidgetW = w - 10; + appData.toplevel->core.width = w; + } else { + appData.toplevel->core.width = MIN_WIDTH; + newWidgetW = MIN_WIDTH - 10; + } + + hOverHead = (5.6 * appData.numGraphsOn) - (6 / appData.numGraphsOn); + boxH = 22; + timeH = 12; + if (h > GRAPH_MIN_HEIGHT * appData.numGraphsOn + hOverHead + (boxH+7) + (timeH+10)) + newWidgetH = (h - hOverHead - (boxH+7) - (timeH+10)) / appData.numGraphsOn; + else + newWidgetH = GRAPH_MIN_HEIGHT; + + MIN_HEIGHT = newWidgetH * appData.numGraphsOn + hOverHead + (boxH+7) + (timeH+10); + appData.toplevel->core.height = MIN_HEIGHT; + + XtResizeWindow(appData.toplevel); + } + labelBox = XtVaCreateManagedWidget("LabelBox", labelWidgetClass, pappaBox, ! XtNwidth, newWidgetW, ! XtNheight, boxH, XtNjustify, XtJustifyLeft, XtNinternalHeight, 0, XtNtop, XtChainTop, *************** *** 570,577 **** perfmon[i] = XtVaCreateManagedWidget(hostname, perfChartWidgetClass, pappaBox, XtNtopLabel, topNames[i], XtNbotLabel, botNames[i], ! XtNwidth, 250, ! XtNheight, 36, XtNupdate, appData.interval*appData.ms_per_sec, XtNfillRect, (int)appData.fill, XtNjumpScroll, 1, --- 743,750 ---- perfmon[i] = XtVaCreateManagedWidget(hostname, perfChartWidgetClass, pappaBox, XtNtopLabel, topNames[i], XtNbotLabel, botNames[i], ! XtNwidth, newWidgetW, ! XtNheight, newWidgetH, XtNupdate, appData.interval*appData.ms_per_sec, XtNfillRect, (int)appData.fill, XtNjumpScroll, 1, *************** *** 580,600 **** } timechart = XtVaCreateManagedWidget("timeChart", timeChartWidgetClass, pappaBox, XtNfromVert, perfmon[1], ! XtNwidth, 250, ! XtNheight, 18, XtNupdate, appData.interval*appData.ms_per_sec, XtNjumpScroll, 1, NULL); sys_setup(); XtAddCallback(timechart, XtNgetValue, update_time_stat, NULL); for ( i=0; i