diff options
author | gVisor bot <gvisor-bot@google.com> | 2019-06-10 22:55:32 +0000 |
---|---|---|
committer | gVisor bot <gvisor-bot@google.com> | 2019-06-10 22:55:32 +0000 |
commit | 857005f70793d553203f303c834368694adc8b8f (patch) | |
tree | 18dfd06743d104b786df6dfd9d67a059d1c7e5fa /pkg/procid | |
parent | 8390a8227b571e82c42e3e90aa28a7b86f7e3f9b (diff) | |
parent | 589f36ac4ae31b1f7f35a74d982398e48c28aa31 (diff) |
Merge 589f36ac (automated)
Diffstat (limited to 'pkg/procid')
-rw-r--r-- | pkg/procid/procid.go | 21 | ||||
-rw-r--r-- | pkg/procid/procid_amd64.s | 30 | ||||
-rw-r--r-- | pkg/procid/procid_arm64.s | 29 | ||||
-rwxr-xr-x | pkg/procid/procid_state_autogen.go | 4 |
4 files changed, 84 insertions, 0 deletions
diff --git a/pkg/procid/procid.go b/pkg/procid/procid.go new file mode 100644 index 000000000..78b92422c --- /dev/null +++ b/pkg/procid/procid.go @@ -0,0 +1,21 @@ +// Copyright 2018 The gVisor Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Package procid provides a way to get the current system thread identifier. +package procid + +// Current returns the current system thread identifier. +// +// Precondition: This should only be called with the runtime OS thread locked. +func Current() uint64 diff --git a/pkg/procid/procid_amd64.s b/pkg/procid/procid_amd64.s new file mode 100644 index 000000000..30ec8e6e2 --- /dev/null +++ b/pkg/procid/procid_amd64.s @@ -0,0 +1,30 @@ +// Copyright 2018 The gVisor Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// +build amd64 +// +build go1.8 +// +build !go1.14 + +#include "textflag.h" + +TEXT ·Current(SB),NOSPLIT,$0-8 + // The offset specified here is the m_procid offset for Go1.8+. + // Changes to this offset should be caught by the tests, and major + // version changes require an explicit tag change above. + MOVQ TLS, AX + MOVQ 0(AX)(TLS*1), AX + MOVQ 48(AX), AX // g_m (may change in future versions) + MOVQ 72(AX), AX // m_procid (may change in future versions) + MOVQ AX, ret+0(FP) + RET diff --git a/pkg/procid/procid_arm64.s b/pkg/procid/procid_arm64.s new file mode 100644 index 000000000..e340d9f98 --- /dev/null +++ b/pkg/procid/procid_arm64.s @@ -0,0 +1,29 @@ +// Copyright 2018 The gVisor Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// +build arm64 +// +build go1.8 +// +build !go1.14 + +#include "textflag.h" + +TEXT ·Current(SB),NOSPLIT,$0-8 + // The offset specified here is the m_procid offset for Go1.8+. + // Changes to this offset should be caught by the tests, and major + // version changes require an explicit tag change above. + MOVD g, R0 // g + MOVD 48(R0), R0 // g_m (may change in future versions) + MOVD 72(R0), R0 // m_procid (may change in future versions) + MOVD R0, ret+0(FP) + RET diff --git a/pkg/procid/procid_state_autogen.go b/pkg/procid/procid_state_autogen.go new file mode 100755 index 000000000..f27a7c510 --- /dev/null +++ b/pkg/procid/procid_state_autogen.go @@ -0,0 +1,4 @@ +// automatically generated by stateify. + +package procid + |