home *** CD-ROM | disk | FTP | other *** search
- From: wht@n4hgf.uucp (Warren Tucker)
- Newsgroups: alt.sources
- Subject: u386mon 1.0, UNIX 386 system monitor, part 03/03
- Message-ID: <121@n4hgf.uucp>
- Date: 24 Jun 90 21:16:26 GMT
-
- Submitted-by: wht@n4hgf
- Archive-name: u386mon.1.00/part03
-
- #!/bin/sh
- # This is part 03 of u386mon.1.00
- if touch 2>&1 | fgrep 'mmdd' > /dev/null
- then TOUCH=touch
- else TOUCH=true
- fi
- # ============= libmem.h ==============
- echo "x - extracting libmem.h (Text)"
- sed 's/^X//' << 'SHAR_EOF' > libmem.h &&
- X/*+-----------------------------------------------------------------------
- X libmem.h
- X ...!emory!n4hgf!wht
- X------------------------------------------------------------------------*/
- X/*+:EDITS:*/
- X/*:06-21-1990-14:26-r@n4hgf-version x0.12 seems bug free */
- X/*:10-28-1988-14:46-afterlint-creation */
- X
- X#ifndef BUILDING_LINT_ARGS
- X#ifdef LINT_ARGS
- X
- X/* libmem.c */
- Xvoid minit(int );
- Xvoid mread(char *,long ,int );
- Xvoid mwrite(long ,char *,int );
- X
- X#else /* compiler doesn't mnow about prototyping */
- X
- X/* libmem.c */
- Xvoid minit();
- Xvoid mread();
- Xvoid mwrite();
- X
- X#endif /* LINT_ARGS */
- X#endif /* BUILDING_LINT_ARGS */
- X
- X/* end of libmem.h */
- SHAR_EOF
- $TOUCH -am 0624151990 libmem.h &&
- chmod 0644 libmem.h ||
- echo "restore of libmem.h failed"
- set `wc -c libmem.h`;Wc_c=$1
- if test "$Wc_c" != "632"; then
- echo original size 632, current size $Wc_c
- fi
- # ============= libswap.h ==============
- echo "x - extracting libswap.h (Text)"
- sed 's/^X//' << 'SHAR_EOF' > libswap.h &&
- X/*+-----------------------------------------------------------------------
- X libswap.h
- X ...!emory!n4hgf!wht
- X------------------------------------------------------------------------*/
- X/*+:EDITS:*/
- X/*:06-22-1990-02:03-root@n4hgf-creation from libmem */
- X
- X#ifndef BUILDING_LINT_ARGS
- X#ifdef LINT_ARGS
- X
- X/* libswap.c */
- Xvoid sinit(void );
- Xvoid sread(char *,long ,int );
- X
- X#else /* compiler doesn't mnow about prototyping */
- X
- X/* libswap.c */
- Xvoid sinit();
- Xvoid sread();
- Xvoid swrite();
- X
- X#endif /* LINT_ARGS */
- X#endif /* BUILDING_LINT_ARGS */
- X
- X/* end of libswap.h */
- SHAR_EOF
- $TOUCH -am 0624151990 libswap.h &&
- chmod 0644 libswap.h ||
- echo "restore of libswap.h failed"
- set `wc -c libswap.h`;Wc_c=$1
- if test "$Wc_c" != "557"; then
- echo original size 557, current size $Wc_c
- fi
- # ============= libnlsym.h ==============
- echo "x - extracting libnlsym.h (Text)"
- sed 's/^X//' << 'SHAR_EOF' > libnlsym.h &&
- X/*+-----------------------------------------------------------------------
- X libnlsym.h
- X ...!emory!n4hgf!wht
- X------------------------------------------------------------------------*/
- X/*+:EDITS:*/
- X/*:06-21-1990-14:26-r@n4hgf-version x0.12 seems bug free */
- X/*:10-28-1988-14:47-afterlint-creation */
- X
- X#ifndef BUILDING_LINT_ARGS
- X#ifdef LINT_ARGS
- X
- X/* libnlsym.c */
- Xvoid nlsym_error(char * );
- Xvoid nlsym_read(void);
- X
- X#else /* compiler doesn't know about prototyping */
- X
- X/* libnlsym.c */
- Xvoid nlsym_error();
- Xvoid nlsym_read();
- X
- X#endif /* LINT_ARGS */
- X#endif /* BUILDING_LINT_ARGS */
- X
- X/* end of libnlsym.h */
- SHAR_EOF
- $TOUCH -am 0624151990 libnlsym.h &&
- chmod 0644 libnlsym.h ||
- echo "restore of libnlsym.h failed"
- set `wc -c libnlsym.h`;Wc_c=$1
- if test "$Wc_c" != "603"; then
- echo original size 603, current size $Wc_c
- fi
- # ============= lint_args.h ==============
- echo "x - extracting lint_args.h (Text)"
- sed 's/^X//' << 'SHAR_EOF' > lint_args.h &&
- X/*+-----------------------------------------------------------------------
- X lint_args.h
- X------------------------------------------------------------------------*/
- X/*+:EDITS:*/
- X/*:06-22-1990-16:05-afterlint-creation */
- X
- X#ifndef BUILDING_LINT_ARGS
- X#ifdef LINT_ARGS
- X
- X/* bootinfo.c */
- Xextern char *bmemf_text(unsigned long flags);
- Xextern void display_bootinfo(struct _win_st *win,int y,int x);
- X/* det_proc.c */
- Xextern char *get_cpu_time_str(long ticks);
- Xextern char *pgrp_to_ttyname(int pgrp);
- Xextern char *uid_to_name(int uid);
- Xextern int get_user(struct proc *tproc,struct user *tuser);
- Xextern int getpwent_and_enter(int uid);
- Xextern int proc_pid_compare(struct proc *p1,struct proc *p2);
- Xextern int uid_name_enter(int uid,char *name);
- Xextern struct utmp *find_utmp_for_pgrp(int pgrp);
- Xextern void display_proc_stat(struct _win_st *win,int iproc,int initial);
- Xextern void display_proc_stats(struct _win_st *win,int initial);
- Xextern void init_uid_name_hash(void );
- Xextern void read_and_sort_procs(int initial);
- Xextern void read_utmp(void );
- X/* detail.c */
- Xextern void detail_destroy(void );
- Xextern void detail_init(void );
- Xextern void detail_panel_cmd(unsigned long cmd);
- Xextern void detail_panel_proc_status_init(int full43);
- Xextern void detail_panel_proc_status_update(void );
- Xextern void detail_panel_update(void );
- X/* disputil.c */
- Xextern struct PANEL *mkpanel(int rows,int cols,int tly,int tlx);
- Xextern void clear_area(struct _win_st *win,int y,int x,int len);
- Xextern void clear_area_char(struct _win_st *win,int y,int x,int len,unsigned char fillchar);
- Xextern void disp_info_int(struct _win_st *win,char *label,char *fmt,int value);
- Xextern void disp_info_long(struct _win_st *win,char *label,char *fmt,long value);
- Xextern void disp_msg(unsigned long cp,char *msg);
- Xextern void disp_static_int(struct _win_st *win,char *label,char *fmt,int value);
- Xextern void disp_static_long(struct _win_st *win,char *label,char *fmt,long value);
- Xextern void pflush(void );
- Xextern void wperror(struct _win_st *win,char *desc);
- X/* libkmem.c */
- Xextern void kinit(int write_needed);
- Xextern void kread(char *caddr,long kaddr,int len);
- X/* libmem.c */
- Xextern void minit(int write_needed);
- Xextern void mread(char *caddr,long maddr,int len);
- X/* libnlsym.c */
- Xextern void nlsym_error(char *text);
- Xextern void nlsym_read(void );
- X/* libswap.c */
- Xextern void sinit(void );
- Xextern void sread(char *caddr,long maddr,int len);
- X/* nlsym.c */
- Xextern int main(int argc,char * *argv,char * *envp);
- Xextern void nlsym_write_error(int code);
- X/* proc.c */
- Xextern char *pstat_text(char pstat);
- Xextern void display_proc(struct _win_st *win,int y,int x);
- Xextern void grok_proc(void );
- X/* tune.c */
- Xextern void display_tune(struct _win_st *win,int y,int x);
- X/* u386mon.c */
- Xextern char *get_elapsed_time(long elapsed_seconds);
- Xextern int get_cpu_avg(long *cpu_ticks,int period);
- Xextern int get_wait_avg(long *wait_ticks,int period);
- Xextern int main(int argc,char * *argv,char * *envp);
- Xextern long update_cpuscale(struct _win_st *win,int y,int x,int width,long *per_state);
- Xextern long update_waitscale(struct _win_st *win,int y,int x,int width,long *per_state,long total_ticks);
- Xextern void calc_cpu_avg(long *per_state);
- Xextern void calc_wait_avg(long *per_state);
- Xextern void draw_cpuscale_literals(struct _win_st *win,int y,int x);
- Xextern void draw_per_sec_literals(struct _win_st *win,int y,int x);
- Xextern void draw_waitscale_literals(struct _win_st *win,int y,int x);
- Xextern void extra_info_stuff(void );
- Xextern void extra_static_stuff(void );
- Xextern void leave(int exit_code);
- Xextern void leave_text(char *text,int exit_code);
- X/* var.c */
- Xextern void display_var(struct _win_st *win,int y,int x);
- X
- X#else /* compiler doesn't know about prototyping */
- X
- X/* bootinfo.c */
- Xextern char *bmemf_text();
- Xextern void display_bootinfo();
- X/* det_proc.c */
- Xextern char *get_cpu_time_str();
- Xextern char *pgrp_to_ttyname();
- Xextern char *uid_to_name();
- Xextern int get_user();
- Xextern int getpwent_and_enter();
- Xextern int proc_pid_compare();
- Xextern int uid_name_enter();
- Xextern struct utmp *find_utmp_for_pgrp();
- Xextern void display_proc_stat();
- Xextern void display_proc_stats();
- Xextern void init_uid_name_hash();
- Xextern void read_and_sort_procs();
- Xextern void read_utmp();
- X/* detail.c */
- Xextern void detail_destroy();
- Xextern void detail_init();
- Xextern void detail_panel_cmd();
- Xextern void detail_panel_proc_status_init();
- Xextern void detail_panel_proc_status_update();
- Xextern void detail_panel_update();
- X/* disputil.c */
- Xextern struct PANEL *mkpanel();
- Xextern void clear_area();
- Xextern void clear_area_char();
- Xextern void disp_info_int();
- Xextern void disp_info_long();
- Xextern void disp_msg();
- Xextern void disp_static_int();
- Xextern void disp_static_long();
- Xextern void pflush();
- Xextern void wperror();
- X/* libkmem.c */
- Xextern void kinit();
- Xextern void kread();
- X/* libmem.c */
- Xextern void minit();
- Xextern void mread();
- X/* libnlsym.c */
- Xextern void nlsym_error();
- Xextern void nlsym_read();
- X/* libswap.c */
- Xextern void sinit();
- Xextern void sread();
- X/* nlsym.c */
- Xextern int main();
- Xextern void nlsym_write_error();
- X/* proc.c */
- Xextern char *pstat_text();
- Xextern void display_proc();
- Xextern void grok_proc();
- X/* tune.c */
- Xextern void display_tune();
- X/* u386mon.c */
- Xextern char *get_elapsed_time();
- Xextern int get_cpu_avg();
- Xextern int get_wait_avg();
- Xextern int main();
- Xextern long update_cpuscale();
- Xextern long update_waitscale();
- Xextern void calc_cpu_avg();
- Xextern void calc_wait_avg();
- Xextern void draw_cpuscale_literals();
- Xextern void draw_per_sec_literals();
- Xextern void draw_waitscale_literals();
- Xextern void extra_info_stuff();
- Xextern void extra_static_stuff();
- Xextern void leave();
- Xextern void leave_text();
- X/* var.c */
- Xextern void display_var();
- X
- X#endif /* LINT_ARGS */
- X#endif /* BUILDING_LINT_ARGS */
- X
- X/* end of lint_args.h */
- SHAR_EOF
- $TOUCH -am 0624151990 lint_args.h &&
- chmod 0644 lint_args.h ||
- echo "restore of lint_args.h failed"
- set `wc -c lint_args.h`;Wc_c=$1
- if test "$Wc_c" != "5906"; then
- echo original size 5906, current size $Wc_c
- fi
- # ============= nlsym.h ==============
- echo "x - extracting nlsym.h (Text)"
- sed 's/^X//' << 'SHAR_EOF' > nlsym.h &&
- X/*+-------------------------------------------------------------------------
- X nlsym.h -- utility nlist - fast access to kernel /dev/kmem offsets
- X ...!emory!n4hgf!wht
- X
- XThe nlsym file contains three records:
- X1. struct stat unixstat - stat buffer from /unix at file creation time
- X2. struct nlist nlsym - the structure of nlist'd information
- X3. long unique - a unique identifier to help ensure correct nlsym length
- X
- X--------------------------------------------------------------------------*/
- X/*+:EDITS:*/
- X/*:06-21-1990-14:26-r@n4hgf-version x0.12 seems bug free */
- X/*:10-27-1988-11:07-wht-creation */
- X
- X#define UNIX_KERNEL "/unix"
- X#define UNIX_NLSYM "/unix.nlsym"
- X#define NLSYM_UNIQUE 0xEFBC9A78L
- X
- X#define Nindex_AVAILRMEM 0
- X#define Nindex_AVAILSMEM 1
- X#define Nindex_BDEVCNT 2
- X#define Nindex_BDEVSW 3
- X#define Nindex_BOOTINFO 4
- X#define Nindex_CDEVCNT 5
- X#define Nindex_CDEVSW 6
- X#define Nindex_CFREE 7
- X#define Nindex_CFREECNT 8
- X#define Nindex_CFREELIST 9
- X#define Nindex_CMASK 10
- X#define Nindex_CONSSW 11
- X#define Nindex_CURPROC 12
- X#define Nindex_DINFO 13
- X#define Nindex_DISKINFO 14
- X#define Nindex_DSTFLAG 15
- X#define Nindex_DUMPDEV 16
- X#define Nindex_EMAP 17
- X#define Nindex_FFREELIST 18
- X#define Nindex_FILE 19
- X#define Nindex_FMODCNT 20
- X#define Nindex_FMODSW 21
- X#define Nindex_FREEMEM 22
- X#define Nindex_FSINFO 23
- X#define Nindex_FSTYPSW 24
- X#define Nindex_HZ 25
- X#define Nindex_IDLESERVER 26
- X#define Nindex_IFREELIST 27
- X#define Nindex_INODE 28
- X#define Nindex_KPTBL 29
- X#define Nindex_LBOLT 30
- X#define Nindex_LINECNT 31
- X#define Nindex_LINESW 32
- X#define Nindex_MAXCLICK 33
- X#define Nindex_MAXMEM 34
- X#define Nindex_MFMAP 35
- X#define Nindex_MFMAX 36
- X#define Nindex_MINFO 37
- X#define Nindex_MOUNT 38
- X#define Nindex_MSGLISTCNT 39
- X#define Nindex_NFSTYP 40
- X#define Nindex_NPTALLOCED 41
- X#define Nindex_NPTFREE 42
- X#define Nindex_NSERVERS 43
- X#define Nindex_NSWAP 44
- X#define Nindex_NSYSENT 45
- X#define Nindex_OLDPROC 46
- X#define Nindex_OLD_CURPROC 47
- X#define Nindex_PANICSTR 48
- X#define Nindex_PHYSMEM 49
- X#define Nindex_PIPEDEV 50
- X#define Nindex_PROC 51
- X#define Nindex_RCINFO 52
- X#define Nindex_ROOTDEV 53
- X#define Nindex_RUNQ 54
- X#define Nindex_SHLBINFO 55
- X#define Nindex_SWAPDEV 56
- X#define Nindex_SWPLO 57
- X#define Nindex_SYSERR 58
- X#define Nindex_SYSINFO 59
- X#define Nindex_SYSSEGS 60
- X#define Nindex_SYSWAIT 61
- X#define Nindex_TIME 62
- X#define Nindex_TIMEZONE 63
- X#define Nindex_TTHIWAT 64
- X#define Nindex_TTLOWAT 65
- X#define Nindex_TTNULQ 66
- X#define Nindex_TTYHOG 67
- X#define Nindex_TUNE 68
- X#define Nindex_U 69
- X#define Nindex_USERTABLE 70
- X#define Nindex_V 71
- X#define Nindex_WIN_UBLK 72
- X
- X#define bootinfoaddr (nlsym[Nindex_BOOTINFO].n_value)
- X#define freememaddr (nlsym[Nindex_FREEMEM].n_value)
- X#define lboltaddr (nlsym[Nindex_LBOLT].n_value)
- X#define maxmemaddr (nlsym[Nindex_MAXMEM].n_value)
- X#define minfoaddr (nlsym[Nindex_MINFO].n_value)
- X#define nswapaddr (nlsym[Nindex_NSWAP].n_value)
- X#define physmemaddr (nlsym[Nindex_PHYSMEM].n_value)
- X#define procaddr (nlsym[Nindex_PROC].n_value)
- X#define sysinfoaddr (nlsym[Nindex_SYSINFO].n_value)
- X#define tuneaddr (nlsym[Nindex_TUNE].n_value)
- X#define vaddr (nlsym[Nindex_V].n_value)
- X
- X#ifdef DEFINE_NLSYM
- Xstruct nlist nlsym[] =
- X{
- X { "availrmem" },
- X { "availsmem" },
- X { "bdevcnt" },
- X { "bdevsw" },
- X { "bootinfo" },
- X { "cdevcnt" },
- X { "cdevsw" },
- X { "cfree" },
- X { "cfreecnt" },
- X { "cfreelist" },
- X { "Cmask" },
- X { "conssw" },
- X { "curproc" },
- X { "dinfo" },
- X { "diskinfo" },
- X { "Dstflag" },
- X { "dumpdev" },
- X { "emap" },
- X { "ffreelist" },
- X { "file" },
- X { "fmodcnt" },
- X { "fmodsw" },
- X { "freemem" },
- X { "fsinfo" },
- X { "fstypsw" },
- X { "Hz" },
- X { "idleserver" },
- X { "ifreelist" },
- X { "inode" },
- X { "kptbl" },
- X { "lbolt" },
- X { "linecnt" },
- X { "linesw" },
- X { "maxclick" },
- X { "maxmem" },
- X { "mfmap" },
- X { "mfmax" },
- X { "minfo" },
- X { "mount" },
- X { "msglistcnt" },
- X { "nfstyp" },
- X { "nptalloced" },
- X { "nptfree" },
- X { "nservers" },
- X { "nswap" },
- X { "nsysent" },
- X { "oldproc" },
- X { "old_curproc" },
- X { "panicstr" },
- X { "physmem" },
- X { "pipedev" },
- X { "proc" },
- X { "rcinfo" },
- X { "rootdev" },
- X { "runq" },
- X { "shlbinfo" },
- X { "swapdev" },
- X { "swplo" },
- X { "syserr" },
- X { "sysinfo" },
- X { "syssegs" },
- X { "syswait" },
- X { "time" },
- X { "Timezone" },
- X { "tthiwat" },
- X { "ttlowat" },
- X { "ttnulq" },
- X { "ttyhog" },
- X { "tune" },
- X { "u" },
- X { "usertable" },
- X { "v" },
- X { "win_ublk" },
- X { (char *)0 }
- X};
- X#else
- Xextern struct nlist nlsym[];
- X#endif
- X
- X/* vi: set tabstop=4 shiftwidth=4: */
- SHAR_EOF
- $TOUCH -am 0624151990 nlsym.h &&
- chmod 0644 nlsym.h ||
- echo "restore of nlsym.h failed"
- set `wc -c nlsym.h`;Wc_c=$1
- if test "$Wc_c" != "4921"; then
- echo original size 4921, current size $Wc_c
- fi
- # ============= u386mon.h ==============
- echo "x - extracting u386mon.h (Text)"
- sed 's/^X//' << 'SHAR_EOF' > u386mon.h &&
- X
- X/*+-------------------------------------------------------------------------
- X u386mon.h
- X--------------------------------------------------------------------------*/
- X/*+:EDITS:*/
- X/*:06-21-1990-14:27-r@n4hgf-version x0.12 seems bug free */
- X/*:06-20-1990-03:03-root@n4hgf-trick use_cp into making bright fgnd colors */
- X/*:06-19-1990-21:35-wht-get ready for release */
- X
- Xchar *getenv();
- Xchar *strchr();
- Xchar *strrchr();
- X#ifdef __STDC__
- Xvoid *malloc();
- X#else
- Xchar *malloc();
- X#endif
- X
- X#define pW(pan) panel_window(pan)
- X#define W WINDOW
- X#define P PANEL
- X
- X/* color numbers for EGA/VGA */
- X#ifdef COLOR_16_TERMINFO /* wht 16-color fgnd/bgnd terminfo */
- X#define cHIBIT 8
- X#define cBLK 0
- X#define cBLU 1
- X#define cGRN 2
- X#define cCYN 3
- X#define cRED 4
- X#define cMAG 5
- X#define cBRN 6
- X#define cWHT 7
- X#define cGRY (cBLK | cHIBIT)
- X#define cLTB (cBLU | cHIBIT)
- X#define cLTG (cGRN | cHIBIT)
- X#define cLTC (cCYN | cHIBIT)
- X#define cLTR (cRED | cHIBIT)
- X#define cLTM (cMAG | cHIBIT)
- X#define cYEL (cBRN | cHIBIT)
- X#define cHIW (cWHT | cHIBIT)
- X#else
- X#define cBLK COLOR_BLACK
- X#define cBLU COLOR_BLUE
- X#define cGRN COLOR_GREEN
- X#define cCYN COLOR_CYAN
- X#define cRED COLOR_RED
- X#define cMAG COLOR_MAGENTA
- X#define cBRN COLOR_YELLOW
- X#define cWHT COLOR_WHITE
- X#define cGRY COLOR_BLACK
- X#define cLTB COLOR_BLUE
- X#define cLTG COLOR_GREEN
- X#define cLTC COLOR_CYAN
- X#define cLTR COLOR_RED
- X#define cLTM COLOR_MAGENTA
- X#define cYEL COLOR_YELLOW
- X#define cHIW COLOR_WHITE
- X#endif
- X
- X#define sTL 0xDA
- X#define sTR 0xBF
- X#define sBL 0xC0
- X#define sBR 0xD9
- X#define sLT 0xC3 /* left hand T */
- X#define sRT 0xB4 /* right hand T */
- X#define sVR 0xB3 /* vertical rule */
- X#define sHR 0xC4 /* horizontal rule */
- X
- X/* color pairs */
- X#ifdef COLOR_16_TERMINFO /* wht 16-color fgnd/bgnd terminfo */
- X#define use_cp(win,cp) wattrset(win,COLOR_PAIR(cp))
- X#else
- X#define use_cp(win,cp) wattrset(win,COLOR_PAIR(cp) | ((cp >= cpLOW)?A_BOLD:0))
- X#endif
- X#define cpINFO 1 /* information field */
- X#define cpHIGH 2 /* high/brk/pio */
- X/* color pairs >= cpLOW need A_BOLD when using standard ISO (non-wht) terminfo
- X */
- X#define cpLOW 3 /* low/user/iop */
- X#define cpMED 4 /* medium/kernel/swap */
- X#define cpBANNER 5 /* banner */
- X#define cpLIT 6 /* field literals */
- X
- X#define MSG_TLY (LINES - 2)
- X#define CMD_TLY (LINES - 1)
- X#define LVMSG_Y MSG_TLY
- X#define LVMSG_X 0
- X
- X#define CPUSCALE_TLY 1
- X#define CPUSCALE_SX 13
- X#define CPUSCALE_WIDTH 50
- X
- X#define WAITSCALE_TLY 5
- X#define WAITSCALE_SX 13
- X#define WAITSCALE_WIDTH 50
- X
- X/* Sysinfo/Minfo per second area */
- X#define PER_SEC_TLY 9
- X#define PER_SEC1_TLX 0
- X#define PER_SEC2_TLX 17
- X#define PER_SEC3_TLX 34
- X#define PER_SEC4_TLX 50
- X#define PER_SEC5_TLX 65
- X
- X/* extra info area */
- X#define EXTRA_TLY 26
- X#define EXTRA1_TLX 0
- X#define EXTRA2_TLX 18
- X#define EXTRA3_TLX 42
- X#define EXTRA4_TLX 61
- X
- X#include "lint_args.h"
- X
- X/* vi: set tabstop=4 shiftwidth=4: */
- X/* end of u386mon.h */
- SHAR_EOF
- $TOUCH -am 0624151990 u386mon.h &&
- chmod 0644 u386mon.h ||
- echo "restore of u386mon.h failed"
- set `wc -c u386mon.h`;Wc_c=$1
- if test "$Wc_c" != "2852"; then
- echo original size 2852, current size $Wc_c
- fi
- exit 0
-
- ---------------------------------------------------------------------
- Warren Tucker, TuckerWare gatech!n4hgf!wht or wht%n4hgf@gatech.edu
- Ker-au'-lo-phon. An 8-foot partial flue-stop, having metal pipes
- surmounted by adjustable rings, and with a hole bored near the top of
- each pipe. Tone soft and "reedy".
-