[BACK]Return to engine.h CVS log [TXT][DIR] Up to [local] / src / usr.bin / systat

Annotation of src/usr.bin/systat/engine.h, Revision 1.4

1.4     ! naddy       1: /* $Id: engine.h,v 1.3 2008/10/31 06:50:09 canacar Exp $        */
1.1       canacar     2: /*
                      3:  * Copyright (c) 2001, 2007 Can Erkin Acar <canacar@openbsd.org>
                      4:  *
                      5:  * Permission to use, copy, modify, and distribute this software for any
                      6:  * purpose with or without fee is hereby granted, provided that the above
                      7:  * copyright notice and this permission notice appear in all copies.
                      8:  *
                      9:  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
                     10:  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
                     11:  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
                     12:  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
                     13:  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
                     14:  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
                     15:  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
                     16:  */
                     17:
                     18: #ifndef _ENGINE_H_
                     19: #define _ENGINE_H_
                     20:
                     21: #include <curses.h>
                     22:
                     23: #define DEFAULT_WIDTH  80
                     24: #define DEFAULT_HEIGHT 25
                     25:
                     26: /* XXX do not hardcode! */
                     27: #define HEADER_LINES 4
                     28:
                     29:
                     30: #define CTRL_A  1
                     31: #define CTRL_B  2
                     32: #define CTRL_E  5
                     33: #define CTRL_F  6
                     34: #define CTRL_G  7
                     35: #define CTRL_H  8
                     36: #define CTRL_L  12
                     37: #define CTRL_N  14
                     38: #define CTRL_P  16
                     39: #define CTRL_V  22
                     40:
                     41: #define META_V  246
                     42:
                     43: #define MAX_LINE_BUF 1024
                     44:
                     45:
                     46: #define FLD_ALIGN_LEFT   0
                     47: #define FLD_ALIGN_RIGHT  1
                     48: #define FLD_ALIGN_CENTER 2
                     49: #define FLD_ALIGN_COLUMN 3
                     50: #define FLD_ALIGN_BAR    4
                     51:
                     52: #define FLD_FLAG_HIDDEN 1
                     53:
                     54:
                     55: typedef struct {
                     56:        char *title;
                     57:        int norm_width;
                     58:        int max_width;
                     59:        int increment;
                     60:        int align;
                     61:        int start;
                     62:        int width;
                     63:        unsigned flags;
                     64:        int arg;
                     65: } field_def;
                     66:
                     67: typedef struct {
                     68:        char *name;
                     69:        char *match;
                     70:        int hotkey;
                     71:        int (*func) (const void *, const void *);
                     72: } order_type;
                     73:
                     74: struct view_manager {
                     75:        char *name;
                     76:        int  (*select_fn) (void);
                     77:        int  (*read_fn)   (void);
                     78:        void (*sort_fn)   (void);
                     79:        int  (*header_fn) (void);
                     80:        void (*print_fn)  (void);
                     81:        int  (*key_fn)    (int);
                     82:        order_type *order_list;
                     83:        order_type *order_curr;
                     84: };
                     85:
                     86: typedef struct {
                     87:        field_def **view;
                     88:        char *name;
                     89:        int hotkey;
                     90:        struct view_manager *mgr;
                     91: } field_view;
                     92:
                     93: struct command {
                     94:        char *prompt;
1.3       canacar    95:        void ( *exec)(const char *);
1.1       canacar    96: };
                     97:
                     98:
                     99: void tb_start(void);
                    100:
                    101: void tb_end(void);
                    102:
                    103: int tbprintf(char *format, ...) GCC_PRINTFLIKE(1,2);
                    104:
                    105: void end_line(void);
                    106: void end_page(void);
                    107:
                    108: void print_fld_str(field_def *fld, const char *str);
                    109: void print_fld_age(field_def *fld, unsigned int age);
                    110: void print_fld_sdiv(field_def *fld, u_int64_t size, int div);
                    111: void print_fld_size(field_def *fld, u_int64_t size);
1.2       canacar   112: void print_fld_ssdiv(field_def *fld, int64_t size, int div);
                    113: void print_fld_ssize(field_def *fld, int64_t size);
1.1       canacar   114: void print_fld_bw(field_def *fld, double bw);
                    115: void print_fld_rate(field_def *fld, double rate);
                    116: void print_fld_uint(field_def *fld, unsigned int size);
1.4     ! naddy     117: void print_fld_float(field_def *fld, double f, int prec);
1.1       canacar   118: void print_fld_bar(field_def *fld, int value);
                    119: void print_fld_tb(field_def *fld);
                    120:
                    121: void print_title(void);
                    122:
                    123: void hide_field(field_def *fld);
                    124: void show_field(field_def *fld);
                    125: void field_setup(void);
                    126:
                    127: void add_view(field_view *fv);
1.3       canacar   128: int set_view(const char *opt);
1.1       canacar   129: void next_view(void);
                    130: void prev_view(void);
                    131:
1.3       canacar   132: void set_order(const char *opt);
1.1       canacar   133: void next_order(void);
                    134:
                    135: void setup_term(int maxpr);
                    136:
                    137: void engine_initialize(void);
                    138: void engine_loop(int countmax);
                    139:
                    140: struct command *command_set(struct command *cmd, const char *init);
                    141: const char *message_set(const char *msg);
                    142:
                    143: void foreach_view(void (*callback)(field_view *));
                    144:
                    145: extern int sortdir;
                    146: extern useconds_t udelay;
                    147: extern int dispstart;
                    148: extern int interactive;
                    149: extern int maxprint;
                    150: extern int paused;
                    151: extern int rawmode;
                    152: extern int rawwidth;
                    153: extern int columns, lines;
                    154:
                    155: extern int need_update;
                    156: extern int need_sort;
                    157:
                    158: extern volatile sig_atomic_t gotsig_close;
                    159: extern volatile sig_atomic_t gotsig_resize;
                    160: extern volatile sig_atomic_t gotsig_alarm;
                    161:
                    162: extern field_view *curr_view;
                    163: extern struct view_manager *curr_mgr;
                    164:
                    165: extern char tmp_buf[MAX_LINE_BUF];
                    166:
                    167: extern int curr_line; /* XXX temp */
                    168: extern u_int32_t num_disp;
                    169: #endif