mirror of
https://github.com/weaveworks/scope.git
synced 2026-03-04 18:51:17 +00:00
41 lines
927 B
Go
41 lines
927 B
Go
// Copyright 2012 Google, Inc. All rights reserved.
|
|
//
|
|
// Use of this source code is governed by a BSD-style license
|
|
// that can be found in the LICENSE file in the root of the source
|
|
// tree.
|
|
|
|
// Package util provides shared utilities for all gopacket examples.
|
|
package util
|
|
|
|
import (
|
|
"flag"
|
|
"log"
|
|
"os"
|
|
"runtime/pprof"
|
|
)
|
|
|
|
var cpuprofile = flag.String("cpuprofile", "", "Where to write CPU profile")
|
|
|
|
// Run starts up stuff at the beginning of a main function, and returns a
|
|
// function to defer until the function completes. It should be used like this:
|
|
//
|
|
// func main() {
|
|
// defer util.Run()()
|
|
// ... stuff ...
|
|
// }
|
|
func Run() func() {
|
|
flag.Parse()
|
|
if *cpuprofile != "" {
|
|
f, err := os.Create(*cpuprofile)
|
|
if err != nil {
|
|
log.Fatalf("could not open cpu profile file %q", *cpuprofile)
|
|
}
|
|
pprof.StartCPUProfile(f)
|
|
return func() {
|
|
pprof.StopCPUProfile()
|
|
f.Close()
|
|
}
|
|
}
|
|
return func() {}
|
|
}
|