...
1 package logsink
2
3 import (
4 "sync/atomic"
5 "unsafe"
6 )
7
8 func fatalMessageStore(e savedEntry) {
9
10 atomic.CompareAndSwapPointer(&fatalMessage, nil, unsafe.Pointer(&e))
11 }
12
13 var fatalMessage unsafe.Pointer
14
15
16
17 func FatalMessage() (*Meta, []byte, bool) {
18 e := (*savedEntry)(atomic.LoadPointer(&fatalMessage))
19 if e == nil {
20 return nil, nil, false
21 }
22 return e.meta, e.msg, true
23 }
24
25
26
27
28
29 func DoNotUseRacyFatalMessage() (*Meta, []byte, bool) {
30 e := (*savedEntry)(fatalMessage)
31 if e == nil {
32 return nil, nil, false
33 }
34 return e.meta, e.msg, true
35 }
36
View as plain text