|
|
|
(*
|
|
|
|
* Copyright (c) 2017 - present Facebook, Inc.
|
|
|
|
* All rights reserved.
|
|
|
|
*
|
|
|
|
* This source code is licensed under the BSD style license found in the
|
|
|
|
* LICENSE file in the root directory of this source tree. An additional grant
|
|
|
|
* of patent rights can be found in the PATENTS file in the same directory.
|
|
|
|
*)
|
|
|
|
open! IStd
|
|
|
|
open Ctypes
|
|
|
|
|
|
|
|
type winsize
|
|
|
|
(* as found in asm-generic/termios.h *)
|
|
|
|
let winsize : winsize structure typ = structure "winsize"
|
|
|
|
let ws_row = field winsize "ws_row" ushort
|
|
|
|
let ws_col = field winsize "ws_col" ushort
|
|
|
|
let ws_xpixel = field winsize "ws_xpixel" ushort
|
|
|
|
let ws_ypixel = field winsize "ws_ypixel" ushort
|
|
|
|
let () = seal winsize
|
|
|
|
|
|
|
|
module Types (F: Cstubs.Types.TYPE) = struct
|
|
|
|
module Request = struct
|
|
|
|
let request_TIOCGWINSZ = F.constant "TIOCGWINSZ" F.ulong
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
module Bindings (F : Cstubs.FOREIGN) = struct
|
|
|
|
let (@->) = F.(@->) (* shadow Ctypes' operator *)
|
|
|
|
|
|
|
|
(* ioctl(2) is a variadic function, so cross our fingers that the calling convention works the
|
|
|
|
same as non-variadic functions and define different ioctl_* functions for each need *)
|
|
|
|
|
|
|
|
let ioctl_winsize = F.foreign "ioctl" (int @-> ulong @-> ptr winsize @-> F.returning int)
|
|
|
|
end
|