diff --git a/ioctl_linux.go b/ioctl_linux.go
deleted file mode 100644
index 9fe7b0b..0000000
--- a/ioctl_linux.go
+++ /dev/null
@@ -1,42 +0,0 @@
-package pty
-
-// 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_NONE  uint = 0
-	_IOC_WRITE uint = 1
-	_IOC_READ  uint = 2
-)
-
-func _IOC(dir uint, ioctl_type byte, nr byte, size uintptr) uintptr {
-	return (uintptr(dir)<<_IOC_DIRSHIFT |
-		uintptr(ioctl_type)<<_IOC_TYPESHIFT |
-		uintptr(nr)<<_IOC_NRSHIFT |
-		size<<_IOC_SIZESHIFT)
-}
-
-func _IO(ioctl_type byte, nr byte) uintptr {
-	return _IOC(_IOC_NONE, ioctl_type, nr, 0)
-}
-
-func _IOR(ioctl_type byte, nr byte, size uintptr) uintptr {
-	return _IOC(_IOC_READ, ioctl_type, nr, size)
-}
-
-func _IOW(ioctl_type byte, nr byte, size uintptr) uintptr {
-	return _IOC(_IOC_WRITE, ioctl_type, nr, size)
-}
-
-func _IOWR(ioctl_type byte, nr byte, size uintptr) uintptr {
-	return _IOC(_IOC_READ|_IOC_WRITE, ioctl_type, nr, size)
-}
diff --git a/pty_linux.go b/pty_linux.go
index 326899b..d186e62 100644
--- a/pty_linux.go
+++ b/pty_linux.go
@@ -7,11 +7,6 @@
 	"unsafe"
 )
 
-var (
-	ioctl_TIOCGPTN   = uintptr(syscall.TIOCGPTN)   /* Get Pty Number (of pty-mux device) */
-	ioctl_TIOCSPTLCK = uintptr(syscall.TIOCSPTLCK) /* Lock/unlock Pty */
-)
-
 func open() (pty, tty *os.File, err error) {
 	p, err := os.OpenFile("/dev/ptmx", os.O_RDWR, 0)
 	if err != nil {
@@ -37,7 +32,7 @@
 
 func ptsname(f *os.File) (string, error) {
 	var n _C_uint
-	err := ioctl(f.Fd(), ioctl_TIOCGPTN, uintptr(unsafe.Pointer(&n)))
+	err := ioctl(f.Fd(), uintptr(syscall.TIOCGPTN), uintptr(unsafe.Pointer(&n)))
 	if err != nil {
 		return "", err
 	}
@@ -47,5 +42,5 @@
 func unlockpt(f *os.File) error {
 	var u _C_int
 	// use TIOCSPTLCK with a zero valued arg to clear the slave pty lock
-	return ioctl(f.Fd(), ioctl_TIOCSPTLCK, uintptr(unsafe.Pointer(&u)))
+	return ioctl(f.Fd(), uintptr(syscall.TIOCSPTLCK), uintptr(unsafe.Pointer(&u)))
 }
