diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2018-12-25 19:15:28 +0100 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2018-12-26 10:58:23 +0100 |
| commit | 85d28281fb84c829e7bf77a9e115e985bc8c665c (patch) | |
| tree | 76a52b58695611e34b6d1a093f8bfc27fa0341ee /syz-manager/stats.go | |
| parent | 4f7962a7bb882af560bc5c66285424f6d3b73e45 (diff) | |
syz-manager: factor out rpc serving part
Update #605
Diffstat (limited to 'syz-manager/stats.go')
| -rw-r--r-- | syz-manager/stats.go | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/syz-manager/stats.go b/syz-manager/stats.go index c6098b832..6c48a2047 100644 --- a/syz-manager/stats.go +++ b/syz-manager/stats.go @@ -4,6 +4,7 @@ package main import ( + "sync" "sync/atomic" ) @@ -23,10 +24,15 @@ type Stats struct { hubRecvProgDrop Stat hubRecvRepro Stat hubRecvReproDrop Stat + corpusCover Stat + corpusSignal Stat + + mu sync.Mutex + namedStats map[string]uint64 } func (stats *Stats) all() map[string]uint64 { - return map[string]uint64{ + m := map[string]uint64{ "crashes": stats.crashes.get(), "crash types": stats.crashTypes.get(), "suppressed": stats.crashSuppressed.get(), @@ -40,6 +46,30 @@ func (stats *Stats) all() map[string]uint64 { "hub: recv prog drop": stats.hubRecvProgDrop.get(), "hub: recv repro": stats.hubRecvRepro.get(), "hub: recv repro drop": stats.hubRecvReproDrop.get(), + "cover": stats.corpusCover.get(), + "signal": stats.corpusSignal.get(), + } + stats.mu.Lock() + defer stats.mu.Unlock() + for k, v := range stats.namedStats { + m[k] = v + } + return m +} + +func (stats *Stats) mergeNamed(named map[string]uint64) { + stats.mu.Lock() + defer stats.mu.Unlock() + if stats.namedStats == nil { + stats.namedStats = make(map[string]uint64) + } + for k, v := range named { + switch k { + case "exec total": + stats.execTotal.add(int(v)) + default: + stats.namedStats[k] += v + } } } @@ -54,3 +84,7 @@ func (s *Stat) inc() { func (s *Stat) add(v int) { atomic.AddUint64((*uint64)(s), uint64(v)) } + +func (s *Stat) set(v int) { + atomic.StoreUint64((*uint64)(s), uint64(v)) +} |
