101 lines
2.7 KiB
Go
101 lines
2.7 KiB
Go
// 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 linux
|
|
|
|
// ioctl(2) requests provided by asm-generic/ioctls.h
|
|
//
|
|
// These are ordered by request number (low byte).
|
|
const (
|
|
TCGETS = 0x00005401
|
|
TCSETS = 0x00005402
|
|
TCSETSW = 0x00005403
|
|
TCSETSF = 0x00005404
|
|
TCSBRK = 0x00005409
|
|
TIOCEXCL = 0x0000540c
|
|
TIOCNXCL = 0x0000540d
|
|
TIOCSCTTY = 0x0000540e
|
|
TIOCGPGRP = 0x0000540f
|
|
TIOCSPGRP = 0x00005410
|
|
TIOCOUTQ = 0x00005411
|
|
TIOCSTI = 0x00005412
|
|
TIOCGWINSZ = 0x00005413
|
|
TIOCSWINSZ = 0x00005414
|
|
TIOCMGET = 0x00005415
|
|
TIOCMBIS = 0x00005416
|
|
TIOCMBIC = 0x00005417
|
|
TIOCMSET = 0x00005418
|
|
TIOCINQ = 0x0000541b
|
|
FIONREAD = TIOCINQ
|
|
FIONBIO = 0x00005421
|
|
TIOCSETD = 0x00005423
|
|
TIOCNOTTY = 0x00005422
|
|
TIOCGETD = 0x00005424
|
|
TCSBRKP = 0x00005425
|
|
TIOCSBRK = 0x00005427
|
|
TIOCCBRK = 0x00005428
|
|
TIOCGSID = 0x00005429
|
|
TIOCGPTN = 0x80045430
|
|
TIOCSPTLCK = 0x40045431
|
|
TIOCGDEV = 0x80045432
|
|
TIOCVHANGUP = 0x00005437
|
|
TCFLSH = 0x0000540b
|
|
TIOCCONS = 0x0000541d
|
|
TIOCSSERIAL = 0x0000541f
|
|
TIOCGEXCL = 0x80045440
|
|
TIOCGPTPEER = 0x80045441
|
|
TIOCGICOUNT = 0x0000545d
|
|
FIONCLEX = 0x00005450
|
|
FIOCLEX = 0x00005451
|
|
FIOASYNC = 0x00005452
|
|
FIOSETOWN = 0x00008901
|
|
SIOCSPGRP = 0x00008902
|
|
FIOGETOWN = 0x00008903
|
|
SIOCGPGRP = 0x00008904
|
|
)
|
|
|
|
// ioctl(2) requests provided by uapi/linux/sockios.h
|
|
const (
|
|
SIOCGIFMEM = 0x891f
|
|
SIOCGIFPFLAGS = 0x8935
|
|
SIOCGMIIPHY = 0x8947
|
|
SIOCGMIIREG = 0x8948
|
|
)
|
|
|
|
// ioctl(2) directions. Used to calculate requests number.
|
|
// Constants from asm-generic/ioctl.h.
|
|
const (
|
|
_IOC_NONE = 0
|
|
_IOC_WRITE = 1
|
|
_IOC_READ = 2
|
|
)
|
|
|
|
// Constants from asm-generic/ioctl.h.
|
|
const (
|
|
_IOC_NRBITS = 8
|
|
_IOC_TYPEBITS = 8
|
|
_IOC_SIZEBITS = 14
|
|
_IOC_DIRBITS = 2
|
|
|
|
_IOC_NRSHIFT = 0
|
|
_IOC_TYPESHIFT = _IOC_NRSHIFT + _IOC_NRBITS
|
|
_IOC_SIZESHIFT = _IOC_TYPESHIFT + _IOC_TYPEBITS
|
|
_IOC_DIRSHIFT = _IOC_SIZESHIFT + _IOC_SIZEBITS
|
|
)
|
|
|
|
// IOC outputs the result of _IOC macro in asm-generic/ioctl.h.
|
|
func IOC(dir, typ, nr, size uint32) uint32 {
|
|
return uint32(dir)<<_IOC_DIRSHIFT | typ<<_IOC_TYPESHIFT | nr<<_IOC_NRSHIFT | size<<_IOC_SIZESHIFT
|
|
}
|