diff --git a/internal/outcome/dispatcher_test.go b/internal/outcome/dispatcher_test.go index 0d0568e..87a24e6 100644 --- a/internal/outcome/dispatcher_test.go +++ b/internal/outcome/dispatcher_test.go @@ -690,6 +690,7 @@ func (panicMsgContext) Value(any) any { panic("unreachable") } type panicDispatcher struct{} func (panicDispatcher) new(func(k syscallDispatcher, msg message.Msg)) { panic("unreachable") } +func (panicDispatcher) getppid() int { panic("unreachable") } func (panicDispatcher) getpid() int { panic("unreachable") } func (panicDispatcher) getuid() int { panic("unreachable") } func (panicDispatcher) getgid() int { panic("unreachable") } diff --git a/internal/outcome/main.go b/internal/outcome/main.go index 48762c1..feffb66 100644 --- a/internal/outcome/main.go +++ b/internal/outcome/main.go @@ -3,6 +3,7 @@ package outcome import ( "context" "log" + "time" "hakurei.app/hst" "hakurei.app/message" @@ -16,10 +17,13 @@ func Main(ctx context.Context, msg message.Msg, config *hst.Config) { } seal := outcome{syscallDispatcher: direct{msg}} + + finaliseTime := time.Now() if err := seal.finalise(ctx, msg, &id, config); err != nil { printMessageError(msg.GetLogger().Fatalln, "cannot seal app:", err) panic("unreachable") } + msg.Verbosef("finalise took %.2f ms", float64(time.Since(finaliseTime).Nanoseconds())/1e6) seal.main(msg) panic("unreachable") diff --git a/internal/outcome/process.go b/internal/outcome/process.go index 399e7cb..c27ec06 100644 --- a/internal/outcome/process.go +++ b/internal/outcome/process.go @@ -110,14 +110,13 @@ func (k *outcome) main(msg message.Msg) { ) for { - var processTimePrev time.Time - processTimePrev, processTime = processTime, time.Now() var processStatePrev uintptr processStatePrev, processStateCur = processStateCur, processState - if !processTimePrev.IsZero() && processStatePrev != processLifecycle { - msg.Verbosef("state %d took %d ms", processStatePrev, processTime.Sub(processTimePrev).Milliseconds()) + if !processTime.IsZero() && processStatePrev != processLifecycle { + msg.Verbosef("state %d took %.2f ms", processStatePrev, float64(time.Since(processTime).Nanoseconds())/1e6) } + processTime = time.Now() switch processState { case processStart: