Someone?

On 12/30/17 17:37, Martijn van Duren wrote:
> Anyone willing to comment on this?
> 
> On 12/18/17 23:00, Martijn van Duren wrote:
>> Hello tech@,
>>
>> I got a bit annoyed by the fact that it isn't clear what the current
>> ordering is for states. I'm not very familiar with systat, so I might
>> have missed something obvious.
>>
>> Since there was no obvious room available for always printing the
>> active ordering and very few fields do support ordering I added a new
>> keyword to the "global" command interpreter: "order".
>> This is similar to "help", but shows the available orderings for
>> the current view. It also adds the corresponding hotkey for every
>> ordering and highlights the current active ordering. I also added
>> a caret to the active ordering name if the sortdir is reverse.
>>
>> I also noticed via this diff that pcache has ordering options. These
>> are not documented and don't seem to do much. For now I decided to
>> document them, but maybe it's better to just remove the option
>> altogether?
>>
>> Feedback?
>>
>> martijn@
>>
>> Index: engine.c
>> ===================================================================
>> RCS file: /cvs/src/usr.bin/systat/engine.c,v
>> retrieving revision 1.21
>> diff -u -p -u -r1.21 engine.c
>> --- engine.c 5 Apr 2017 15:57:11 -0000       1.21
>> +++ engine.c 18 Dec 2017 21:49:22 -0000
>> @@ -890,6 +890,21 @@ print_fld_float(field_def *fld, double f
>>  
>>  /* ordering */
>>  
>> +int
>> +foreach_order(void (*callback)(order_type *))
>> +{
>> +    order_type *o;
>> +
>> +    if (curr_view == NULL || curr_view->mgr == NULL ||
>> +        curr_view->mgr->order_list == NULL)
>> +            return -1;
>> +    o = curr_view->mgr->order_list;
>> +    do {
>> +            callback(o++);
>> +    } while (o->name != NULL);
>> +    return 0;
>> +}
>> +
>>  void
>>  set_order(const char *opt)
>>  {
>> Index: engine.h
>> ===================================================================
>> RCS file: /cvs/src/usr.bin/systat/engine.h,v
>> retrieving revision 1.8
>> diff -u -p -u -r1.8 engine.h
>> --- engine.h 7 Sep 2013 11:43:49 -0000       1.8
>> +++ engine.h 18 Dec 2017 21:49:22 -0000
>> @@ -130,6 +130,7 @@ int set_view(const char *opt);
>>  void next_view(void);
>>  void prev_view(void);
>>  
>> +int foreach_order(void (*callback)(order_type *));
>>  void set_order(const char *opt);
>>  void next_order(void);
>>  
>> Index: main.c
>> ===================================================================
>> RCS file: /cvs/src/usr.bin/systat/main.c,v
>> retrieving revision 1.66
>> diff -u -p -u -r1.66 main.c
>> --- main.c   13 Oct 2016 11:22:46 -0000      1.66
>> +++ main.c   18 Dec 2017 21:49:22 -0000
>> @@ -251,6 +251,31 @@ show_help(void)
>>  }
>>  
>>  void
>> +add_order_tb(order_type *o)
>> +{
>> +    if (curr_view->mgr->order_curr == o)
>> +            tbprintf("[%s%s(%c)] ", o->name,
>> +                o->func != NULL && sortdir == -1 ? "^" : "",
>> +                (char) o->hotkey);
>> +    else
>> +            tbprintf("%s(%c) ", o->name, (char) o->hotkey);
>> +}
>> +
>> +void
>> +show_order(void)
>> +{
>> +    if (rawmode)
>> +            return;
>> +
>> +    tb_start();
>> +    if (foreach_order(add_order_tb) == -1) {
>> +            tbprintf("No orders available");
>> +    }
>> +    tb_end();
>> +    message_set(tmp_buf);
>> +}
>> +
>> +void
>>  cmd_compat(const char *buf)
>>  {
>>      const char *s;
>> @@ -273,6 +298,11 @@ cmd_compat(const char *buf)
>>              paused = 0;
>>              gotsig_alarm = 1;
>>              cmd_delay(buf + 5);
>> +            return;
>> +    }
>> +    if (strncasecmp(buf, "order", 5) == 0) {
>> +            show_order();
>> +            need_update = 1;
>>              return;
>>      }
>>  
>> Index: pftop.c
>> ===================================================================
>> RCS file: /cvs/src/usr.bin/systat/pftop.c,v
>> retrieving revision 1.40
>> diff -u -p -u -r1.40 pftop.c
>> --- pftop.c  19 Jul 2017 12:58:31 -0000      1.40
>> +++ pftop.c  18 Dec 2017 21:49:22 -0000
>> @@ -269,7 +269,7 @@ order_type order_list[] = {
>>  /* Define view managers */
>>  struct view_manager state_mgr = {
>>      "States", select_states, read_states, sort_states, print_header,
>> -    print_states, keyboard_callback, order_list, NULL
>> +    print_states, keyboard_callback, order_list, order_list
>>  };
>>  
>>  struct view_manager rule_mgr = {
>> Index: systat.1
>> ===================================================================
>> RCS file: /cvs/src/usr.bin/systat/systat.1,v
>> retrieving revision 1.102
>> diff -u -p -u -r1.102 systat.1
>> --- systat.1 15 Jun 2017 03:47:07 -0000      1.102
>> +++ systat.1 18 Dec 2017 21:49:22 -0000
>> @@ -219,6 +219,8 @@ command interpreter.
>>  .Bl -tag -width Fl
>>  .It Ic help
>>  Print the names of the available views on the command line.
>> +.It Ic order
>> +Print the names of the available orderings on the command line.
>>  .It Ic quit
>>  Quit
>>  .Nm .
>> @@ -384,6 +386,10 @@ changes the view to show all of them.
>>  Display kernel
>>  .Xr pool 9
>>  per CPU cache statistics.
>> +Available orderins are:
>> +.Ic name ,
>> +.Ic request ,
>> +.Ic releases .
>>  .It Ic queues
>>  Display statistics about the active queues,
>>  similar to the output of
>>
> 

Reply via email to