zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

scif_ioctl.h (6381B) - Raw


      1 /* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
      2 /*
      3  * Intel MIC Platform Software Stack (MPSS)
      4  *
      5  * This file is provided under a dual BSD/GPLv2 license.  When using or
      6  * redistributing this file, you may do so under either license.
      7  *
      8  * GPL LICENSE SUMMARY
      9  *
     10  * Copyright(c) 2014 Intel Corporation.
     11  *
     12  * This program is free software; you can redistribute it and/or modify
     13  * it under the terms of version 2 of the GNU General Public License as
     14  * published by the Free Software Foundation.
     15  *
     16  * This program is distributed in the hope that it will be useful, but
     17  * WITHOUT ANY WARRANTY; without even the implied warranty of
     18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     19  * General Public License for more details.
     20  *
     21  * BSD LICENSE
     22  *
     23  * Copyright(c) 2014 Intel Corporation.
     24  *
     25  * Redistribution and use in source and binary forms, with or without
     26  * modification, are permitted provided that the following conditions
     27  * are met:
     28  *
     29  * * Redistributions of source code must retain the above copyright
     30  *   notice, this list of conditions and the following disclaimer.
     31  * * Redistributions in binary form must reproduce the above copyright
     32  *   notice, this list of conditions and the following disclaimer in
     33  *   the documentation and/or other materials provided with the
     34  *   distribution.
     35  * * Neither the name of Intel Corporation nor the names of its
     36  *   contributors may be used to endorse or promote products derived
     37  *   from this software without specific prior written permission.
     38  *
     39  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     40  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     41  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
     42  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     43  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
     44  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
     45  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     46  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     47  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     48  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     49  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     50  *
     51  * Intel SCIF driver.
     52  *
     53  */
     54 /*
     55  * -----------------------------------------
     56  * SCIF IOCTL interface information
     57  * -----------------------------------------
     58  */
     59 #ifndef SCIF_IOCTL_H
     60 #define SCIF_IOCTL_H
     61 
     62 #include <linux/types.h>
     63 
     64 /**
     65  * struct scif_port_id - SCIF port information
     66  * @node:	node on which port resides
     67  * @port:	local port number
     68  */
     69 struct scif_port_id {
     70 	__u16 node;
     71 	__u16 port;
     72 };
     73 
     74 /**
     75  * struct scifioctl_connect - used for SCIF_CONNECT IOCTL
     76  * @self:	used to read back the assigned port_id
     77  * @peer:	destination node and port to connect to
     78  */
     79 struct scifioctl_connect {
     80 	struct scif_port_id	self;
     81 	struct scif_port_id	peer;
     82 };
     83 
     84 /**
     85  * struct scifioctl_accept - used for SCIF_ACCEPTREQ IOCTL
     86  * @flags:	flags
     87  * @peer:	global id of peer endpoint
     88  * @endpt:	new connected endpoint descriptor
     89  */
     90 struct scifioctl_accept {
     91 	__s32			flags;
     92 	struct scif_port_id	peer;
     93 	__u64			endpt;
     94 };
     95 
     96 /**
     97  * struct scifioctl_msg - used for SCIF_SEND/SCIF_RECV IOCTL
     98  * @msg:	message buffer address
     99  * @len:	message length
    100  * @flags:	flags
    101  * @out_len:	number of bytes sent/received
    102  */
    103 struct scifioctl_msg {
    104 	__u64	msg;
    105 	__s32	len;
    106 	__s32	flags;
    107 	__s32	out_len;
    108 };
    109 
    110 /**
    111  * struct scifioctl_reg - used for SCIF_REG IOCTL
    112  * @addr:	starting virtual address
    113  * @len:	length of range
    114  * @offset:	offset of window
    115  * @prot:	read/write protection
    116  * @flags:	flags
    117  * @out_offset:	offset returned
    118  */
    119 struct scifioctl_reg {
    120 	__u64		addr;
    121 	__u64		len;
    122 	__s64		offset;
    123 	__s32		prot;
    124 	__s32		flags;
    125 	__s64		out_offset;
    126 };
    127 
    128 /**
    129  * struct scifioctl_unreg - used for SCIF_UNREG IOCTL
    130  * @offset:	start of range to unregister
    131  * @len:	length of range to unregister
    132  */
    133 struct scifioctl_unreg {
    134 	__s64		offset;
    135 	__u64		len;
    136 };
    137 
    138 /**
    139  * struct scifioctl_copy - used for SCIF DMA copy IOCTLs
    140  *
    141  * @loffset:	offset in local registered address space to/from
    142  *		which to copy
    143  * @len:	length of range to copy
    144  * @roffset:	offset in remote registered address space to/from
    145  *		which to copy
    146  * @addr:	user virtual address to/from which to copy
    147  * @flags:	flags
    148  *
    149  * This structure is used for SCIF_READFROM, SCIF_WRITETO, SCIF_VREADFROM
    150  * and SCIF_VREADFROM IOCTL's.
    151  */
    152 struct scifioctl_copy {
    153 	__s64		loffset;
    154 	__u64		len;
    155 	__s64		roffset;
    156 	__u64		addr;
    157 	__s32		flags;
    158 };
    159 
    160 /**
    161  * struct scifioctl_fence_mark  - used for SCIF_FENCE_MARK IOCTL
    162  * @flags:	flags
    163  * @mark:	fence handle which is a pointer to a __s32
    164  */
    165 struct scifioctl_fence_mark {
    166 	__s32	flags;
    167 	__u64	mark;
    168 };
    169 
    170 /**
    171  * struct scifioctl_fence_signal - used for SCIF_FENCE_SIGNAL IOCTL
    172  * @loff:	local offset
    173  * @lval:	value to write to loffset
    174  * @roff:	remote offset
    175  * @rval:	value to write to roffset
    176  * @flags:	flags
    177  */
    178 struct scifioctl_fence_signal {
    179 	__s64		loff;
    180 	__u64		lval;
    181 	__s64		roff;
    182 	__u64		rval;
    183 	__s32		flags;
    184 };
    185 
    186 /**
    187  * struct scifioctl_node_ids - used for SCIF_GET_NODEIDS IOCTL
    188  * @nodes:	pointer to an array of node_ids
    189  * @self:	ID of the current node
    190  * @len:	length of array
    191  */
    192 struct scifioctl_node_ids {
    193 	__u64	nodes;
    194 	__u64	self;
    195 	__s32	len;
    196 };
    197 
    198 #define SCIF_BIND		_IOWR('s', 1, __u64)
    199 #define SCIF_LISTEN		_IOW('s', 2, __s32)
    200 #define SCIF_CONNECT		_IOWR('s', 3, struct scifioctl_connect)
    201 #define SCIF_ACCEPTREQ		_IOWR('s', 4, struct scifioctl_accept)
    202 #define SCIF_ACCEPTREG		_IOWR('s', 5, __u64)
    203 #define SCIF_SEND		_IOWR('s', 6, struct scifioctl_msg)
    204 #define SCIF_RECV		_IOWR('s', 7, struct scifioctl_msg)
    205 #define SCIF_REG		_IOWR('s', 8, struct scifioctl_reg)
    206 #define SCIF_UNREG		_IOWR('s', 9, struct scifioctl_unreg)
    207 #define SCIF_READFROM		_IOWR('s', 10, struct scifioctl_copy)
    208 #define SCIF_WRITETO		_IOWR('s', 11, struct scifioctl_copy)
    209 #define SCIF_VREADFROM		_IOWR('s', 12, struct scifioctl_copy)
    210 #define SCIF_VWRITETO		_IOWR('s', 13, struct scifioctl_copy)
    211 #define SCIF_GET_NODEIDS	_IOWR('s', 14, struct scifioctl_node_ids)
    212 #define SCIF_FENCE_MARK		_IOWR('s', 15, struct scifioctl_fence_mark)
    213 #define SCIF_FENCE_WAIT		_IOWR('s', 16, __s32)
    214 #define SCIF_FENCE_SIGNAL	_IOWR('s', 17, struct scifioctl_fence_signal)
    215 
    216 #endif /* SCIF_IOCTL_H */