github.com/choleraehyq/pid@v0.0.18/p_m_go1.10.go (about) 1 // Copyright 2022 Cholerae Hu. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 12 // implied. See the License for the specific language governing 13 // permissions and limitations under the License. See the AUTHORS file 14 // for names of contributors. 15 16 //go:build gc && go1.10 && !go1.13 17 // +build gc,go1.10,!go1.13 18 19 package goid 20 21 type mutex struct { 22 // Futex-based impl treats it as uint32 key, 23 // while sema-based impl as M* waitm. 24 // Used to be a union, but unions break precise GC. 25 key uintptr 26 } 27 28 type p struct { 29 lock mutex 30 id int32 // Here is pid 31 } 32 33 type m struct { 34 g0 uintptr // goroutine with scheduling stack 35 morebuf gobuf // gobuf arg to morestack 36 divmod uint32 // div/mod denominator for arm - known to liblink 37 38 // Fields not known to debuggers. 39 procid uint64 // for debuggers, but offset not hard-coded 40 gsignal uintptr // signal-handling g 41 goSigStack gsignalStack // Go-allocated signal handling stack 42 sigmask sigset // storage for saved signal mask 43 tls [6]uintptr // thread-local storage (for x86 extern register) 44 mstartfn func() 45 curg uintptr // current running goroutine 46 caughtsig uintptr // goroutine running during fatal signal 47 p *p // attached p for executing go code (nil if not executing go code) 48 }