Patch title: Release 84 bulk changes
Abstract:
File: /pliant/linux/kernel/statistics.pli
Key:
    Removed line
    Added line
   
module "/pliant/language/compiler.pli"
module "/pliant/language/context.pli"
module "/pliant/language/stream.pli"
module "/pliant/language/schedule/daemon.pli"



module "/pliant/language/compiler.pli"
module "/pliant/language/context.pli"
module "/pliant/language/stream.pli"
module "/pliant/language/schedule/daemon.pli"



daemon "gather Linux kernel statistics"
  pick_net_marks in_mark out_mark
  in_total := 0 ; out_total := 0 ; cpu_total := 0
  last_timestamp := datetime
  stat := gvar List:NetStatRecord empty_list
  add_stat_record
  gvar Int lap := 0
  while not daemon_emergency
    daemon_sleep resolution
function gather_statistics
  daemon "gather Linux kernel statistics"
    pick_net_marks in_mark out_mark
    in_total := 0 ; out_total := 0 ; cpu_total := 0
    last_timestamp := datetime
    stat := var List:NetStatRecord empty_list
    add_stat_record
    add_stat_record
    lap += 1
    if lap%6=0
      filter_stat_records
    var Int lap := 0
    while not daemon_emergency
      daemon_sleep resolution
      add_stat_record
      lap += 1
      if lap%6=0
        filter_stat_records
gather_statistics



function net_statistics seconds in_bps out_bps
  arg Float seconds ; arg_w Float in_bps out_bps
  sem rd_request
  var Pointer:NetStatRecord last :> stat last
  var Pointer:NetStatRecord r :> last
  while last:timestamp:seconds-r:timestamp:seconds<seconds a
    r :> stat previous r
  var Float sec := last:timestamp:seconds-r:timestamp:second
  if sec<1
    sec := 1
  in_bps := (cast last:in-r:in Float)*8/sec
  out_bps := (cast last:out-r:out Float)*8/sec
  sem rd_release


if debug
  
  function debug_statistics
    var Pointer:NetStatRecord r :> stat last
    while exists:r
      console r:timestamp " " r:in " " r:out " " r:cpu eol
      r :> stat previous r
  
  export debug_statistics
function net_statistics seconds in_bps out_bps
  arg Float seconds ; arg_w Float in_bps out_bps
  sem rd_request
  var Pointer:NetStatRecord last :> stat last
  var Pointer:NetStatRecord r :> last
  while last:timestamp:seconds-r:timestamp:seconds<seconds a
    r :> stat previous r
  var Float sec := last:timestamp:seconds-r:timestamp:second
  if sec<1
    sec := 1
  in_bps := (cast last:in-r:in Float)*8/sec
  out_bps := (cast last:out-r:out Float)*8/sec
  sem rd_release


if debug
  
  function debug_statistics
    var Pointer:NetStatRecord r :> stat last
    while exists:r
      console r:timestamp " " r:in " " r:out " " r:cpu eol
      r :> stat previous r
  
  export debug_statistics