404

[ Avaa Bypassed ]




Upload:

Command:

botdev@18.226.163.178: ~ $
/*
 * Intel MIC Platform Software Stack (MPSS)
 *
 * This file is provided under a dual BSD/GPLv2 license.  When using or
 * redistributing this file, you may do so under either license.
 *
 * GPL LICENSE SUMMARY
 *
 * Copyright(c) 2014 Intel Corporation.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of version 2 of the GNU General Public License as
 * published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * General Public License for more details.
 *
 * BSD LICENSE
 *
 * Copyright(c) 2014 Intel Corporation.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * * Redistributions of source code must retain the above copyright
 *   notice, this list of conditions and the following disclaimer.
 * * Redistributions in binary form must reproduce the above copyright
 *   notice, this list of conditions and the following disclaimer in
 *   the documentation and/or other materials provided with the
 *   distribution.
 * * Neither the name of Intel Corporation nor the names of its
 *   contributors may be used to endorse or promote products derived
 *   from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * Intel SCIF driver.
 *
 */
#ifndef __SCIF_H__
#define __SCIF_H__

#include <linux/types.h>
#include <linux/poll.h>
#include <linux/device.h>
#include <linux/scif_ioctl.h>

#define SCIF_ACCEPT_SYNC	1
#define SCIF_SEND_BLOCK		1
#define SCIF_RECV_BLOCK		1

enum {
	SCIF_PROT_READ = (1 << 0),
	SCIF_PROT_WRITE = (1 << 1)
};

enum {
	SCIF_MAP_FIXED = 0x10,
	SCIF_MAP_KERNEL	= 0x20,
};

enum {
	SCIF_FENCE_INIT_SELF = (1 << 0),
	SCIF_FENCE_INIT_PEER = (1 << 1),
	SCIF_SIGNAL_LOCAL = (1 << 4),
	SCIF_SIGNAL_REMOTE = (1 << 5)
};

enum {
	SCIF_RMA_USECPU = (1 << 0),
	SCIF_RMA_USECACHE = (1 << 1),
	SCIF_RMA_SYNC = (1 << 2),
	SCIF_RMA_ORDERED = (1 << 3)
};

/* End of SCIF Admin Reserved Ports */
#define SCIF_ADMIN_PORT_END	1024

/* End of SCIF Reserved Ports */
#define SCIF_PORT_RSVD		1088

typedef struct scif_endpt *scif_epd_t;
typedef struct scif_pinned_pages *scif_pinned_pages_t;

/**
 * struct scif_range - SCIF registered range used in kernel mode
 * @cookie: cookie used internally by SCIF
 * @nr_pages: number of pages of PAGE_SIZE
 * @prot_flags: R/W protection
 * @phys_addr: Array of bus addresses
 * @va: Array of kernel virtual addresses backed by the pages in the phys_addr
 *	array. The va is populated only when called on the host for a remote
 *	SCIF connection on MIC. This is required to support the use case of DMA
 *	between MIC and another device which is not a SCIF node e.g., an IB or
 *	ethernet NIC.
 */
struct scif_range {
	void *cookie;
	int nr_pages;
	int prot_flags;
	dma_addr_t *phys_addr;
	void __iomem **va;
};

/**
 * struct scif_pollepd - SCIF endpoint to be monitored via scif_poll
 * @epd: SCIF endpoint
 * @events: requested events
 * @revents: returned events
 */
struct scif_pollepd {
	scif_epd_t epd;
	short events;
	short revents;
};

/**
 * scif_peer_dev - representation of a peer SCIF device
 *
 * Peer devices show up as PCIe devices for the mgmt node but not the cards.
 * The mgmt node discovers all the cards on the PCIe bus and informs the other
 * cards about their peers. Upon notification of a peer a node adds a peer
 * device to the peer bus to maintain symmetry in the way devices are
 * discovered across all nodes in the SCIF network.
 *
 * @dev: underlying device
 * @dnode - The destination node which this device will communicate with.
 */
struct scif_peer_dev {
	struct device dev;
	u8 dnode;
};

/**
 * scif_client - representation of a SCIF client
 * @name: client name
 * @probe - client method called when a peer device is registered
 * @remove - client method called when a peer device is unregistered
 * @si - subsys_interface used internally for implementing SCIF clients
 */
struct scif_client {
	const char *name;
	void (*probe)(struct scif_peer_dev *spdev);
	void (*remove)(struct scif_peer_dev *spdev);
	struct subsys_interface si;
};

#define SCIF_OPEN_FAILED ((scif_epd_t)-1)
#define SCIF_REGISTER_FAILED ((off_t)-1)
#define SCIF_MMAP_FAILED ((void *)-1)

/**
 * scif_open() - Create an endpoint
 *
 * Return:
 * Upon successful completion, scif_open() returns an endpoint descriptor to
 * be used in subsequent SCIF functions calls to refer to that endpoint;
 * otherwise in user mode SCIF_OPEN_FAILED (that is ((scif_epd_t)-1)) is
 * returned and errno is set to indicate the error; in kernel mode a NULL
 * scif_epd_t is returned.
 *
 * Errors:
 * ENOMEM - Insufficient kernel memory was available
 */
scif_epd_t scif_open(void);

/**
 * scif_bind() - Bind an endpoint to a port
 * @epd:	endpoint descriptor
 * @pn:		port number
 *
 * scif_bind() binds endpoint epd to port pn, where pn is a port number on the
 * local node. If pn is zero, a port number greater than or equal to
 * SCIF_PORT_RSVD is assigned and returned. Each endpoint may be bound to
 * exactly one local port. Ports less than 1024 when requested can only be bound
 * by system (or root) processes or by processes executed by privileged users.
 *
 * Return:
 * Upon successful completion, scif_bind() returns the port number to which epd
 * is bound; otherwise in user mode -1 is returned and errno is set to
 * indicate the error; in kernel mode the negative of one of the following
 * errors is returned.
 *
 * Errors:
 * EBADF, ENOTTY - epd is not a valid endpoint descriptor
 * EINVAL - the endpoint or the port is already bound
 * EISCONN - The endpoint is already connected
 * ENOSPC - No port number available for assignment
 * EACCES - The port requested is protected and the user is not the superuser
 */
int scif_bind(scif_epd_t epd, u16 pn);

/**
 * scif_listen() - Listen for connections on an endpoint
 * @epd:	endpoint descriptor
 * @backlog:	maximum pending connection requests
 *
 * scif_listen() marks the endpoint epd as a listening endpoint - that is, as
 * an endpoint that will be used to accept incoming connection requests. Once
 * so marked, the endpoint is said to be in the listening state and may not be
 * used as the endpoint of a connection.
 *
 * The endpoint, epd, must have been bound to a port.
 *
 * The backlog argument defines the maximum length to which the queue of
 * pending connections for epd may grow. If a connection request arrives when
 * the queue is full, the client may receive an error with an indication that
 * the connection was refused.
 *
 * Return:
 * Upon successful completion, scif_listen() returns 0; otherwise in user mode
 * -1 is returned and errno is set to indicate the error; in kernel mode the
 * negative of one of the following errors is returned.
 *
 * Errors:
 * EBADF, ENOTTY - epd is not a valid endpoint descriptor
 * EINVAL - the endpoint is not bound to a port
 * EISCONN - The endpoint is already connected or listening
 */
int scif_listen(scif_epd_t epd, int backlog);

/**
 * scif_connect() - Initiate a connection on a port
 * @epd:	endpoint descriptor
 * @dst:	global id of port to which to connect
 *
 * The scif_connect() function requests the connection of endpoint epd to remote
 * port dst. If the connection is successful, a peer endpoint, bound to dst, is
 * created on node dst.node. On successful return, the connection is complete.
 *
 * If the endpoint epd has not already been bound to a port, scif_connect()
 * will bind it to an unused local port.
 *
 * A connection is terminated when an endpoint of the connection is closed,
 * either explicitly by scif_close(), or when a process that owns one of the
 * endpoints of the connection is terminated.
 *
 * In user space, scif_connect() supports an asynchronous connection mode
 * if the application has set the O_NONBLOCK flag on the endpoint via the
 * fcntl() system call. Setting this flag will result in the calling process
 * not to wait during scif_connect().
 *
 * Return:
 * Upon successful completion, scif_connect() returns the port ID to which the
 * endpoint, epd, is bound; otherwise in user mode -1 is returned and errno is
 * set to indicate the error; in kernel mode the negative of one of the
 * following errors is returned.
 *
 * Errors:
 * EBADF, ENOTTY - epd is not a valid endpoint descriptor
 * ECONNREFUSED - The destination was not listening for connections or refused
 * the connection request
 * EINVAL - dst.port is not a valid port ID
 * EISCONN - The endpoint is already connected
 * ENOMEM - No buffer space is available
 * ENODEV - The destination node does not exist, or the node is lost or existed,
 * but is not currently in the network since it may have crashed
 * ENOSPC - No port number available for assignment
 * EOPNOTSUPP - The endpoint is listening and cannot be connected
 */
int scif_connect(scif_epd_t epd, struct scif_port_id *dst);

/**
 * scif_accept() - Accept a connection on an endpoint
 * @epd:	endpoint descriptor
 * @peer:	global id of port to which connected
 * @newepd:	new connected endpoint descriptor
 * @flags:	flags
 *
 * The scif_accept() call extracts the first connection request from the queue
 * of pending connections for the port on which epd is listening. scif_accept()
 * creates a new endpoint, bound to the same port as epd, and allocates a new
 * SCIF endpoint descriptor, returned in newepd, for the endpoint. The new
 * endpoint is connected to the endpoint through which the connection was
 * requested. epd is unaffected by this call, and remains in the listening
 * state.
 *
 * On successful return, peer holds the global port identifier (node id and
 * local port number) of the port which requested the connection.
 *
 * A connection is terminated when an endpoint of the connection is closed,
 * either explicitly by scif_close(), or when a process that owns one of the
 * endpoints of the connection is terminated.
 *
 * The number of connections that can (subsequently) be accepted on epd is only
 * limited by system resources (memory).
 *
 * The flags argument is formed by OR'ing together zero or more of the
 * following values.
 * SCIF_ACCEPT_SYNC - block until a connection request is presented. If
 *			SCIF_ACCEPT_SYNC is not in flags, and no pending
 *			connections are present on the queue, scif_accept()
 *			fails with an EAGAIN error
 *
 * In user mode, the select() and poll() functions can be used to determine
 * when there is a connection request. In kernel mode, the scif_poll()
 * function may be used for this purpose. A readable event will be delivered
 * when a connection is requested.
 *
 * Return:
 * Upon successful completion, scif_accept() returns 0; otherwise in user mode
 * -1 is returned and errno is set to indicate the error; in kernel mode the
 *	negative of one of the following errors is returned.
 *
 * Errors:
 * EAGAIN - SCIF_ACCEPT_SYNC is not set and no connections are present to be
 * accepted or SCIF_ACCEPT_SYNC is not set and remote node failed to complete
 * its connection request
 * EBADF, ENOTTY - epd is not a valid endpoint descriptor
 * EINTR - Interrupted function
 * EINVAL - epd is not a listening endpoint, or flags is invalid, or peer is
 * NULL, or newepd is NULL
 * ENODEV - The requesting node is lost or existed, but is not currently in the
 * network since it may have crashed
 * ENOMEM - Not enough space
 * ENOENT - Secondary part of epd registration failed
 */
int scif_accept(scif_epd_t epd, struct scif_port_id *peer, scif_epd_t
		*newepd, int flags);

/**
 * scif_close() - Close an endpoint
 * @epd:	endpoint descriptor
 *
 * scif_close() closes an endpoint and performs necessary teardown of
 * facilities associated with that endpoint.
 *
 * If epd is a listening endpoint then it will no longer accept connection
 * requests on the port to which it is bound. Any pending connection requests
 * are rejected.
 *
 * If epd is a connected endpoint, then its peer endpoint is also closed. RMAs
 * which are in-process through epd or its peer endpoint will complete before
 * scif_close() returns. Registered windows of the local and peer endpoints are
 * released as if scif_unregister() was called against each window.
 *
 * Closing a SCIF endpoint does not affect local registered memory mapped by
 * a SCIF endpoint on a remote node. The local memory remains mapped by the peer
 * SCIF endpoint explicitly removed by calling munmap(..) by the peer.
 *
 * If the peer endpoint's receive queue is not empty at the time that epd is
 * closed, then the peer endpoint can be passed as the endpoint parameter to
 * scif_recv() until the receive queue is empty.
 *
 * epd is freed and may no longer be accessed.
 *
 * Return:
 * Upon successful completion, scif_close() returns 0; otherwise in user mode
 * -1 is returned and errno is set to indicate the error; in kernel mode the
 * negative of one of the following errors is returned.
 *
 * Errors:
 * EBADF, ENOTTY - epd is not a valid endpoint descriptor
 */
int scif_close(scif_epd_t epd);

/**
 * scif_send() - Send a message
 * @epd:	endpoint descriptor
 * @msg:	message buffer address
 * @len:	message length
 * @flags:	blocking mode flags
 *
 * scif_send() sends data to the peer of endpoint epd. Up to len bytes of data
 * are copied from memory starting at address msg. On successful execution the
 * return value of scif_send() is the number of bytes that were sent, and is
 * zero if no bytes were sent because len was zero. scif_send() may be called
 * only when the endpoint is in a connected state.
 *
 * If a scif_send() call is non-blocking, then it sends only those bytes which
 * can be sent without waiting, up to a maximum of len bytes.
 *
 * If a scif_send() call is blocking, then it normally returns after sending
 * all len bytes. If a blocking call is interrupted or the connection is
 * reset, the call is considered successful if some bytes were sent or len is
 * zero, otherwise the call is considered unsuccessful.
 *
 * In user mode, the select() and poll() functions can be used to determine
 * when the send queue is not full. In kernel mode, the scif_poll() function
 * may be used for this purpose.
 *
 * It is recommended that scif_send()/scif_recv() only be used for short
 * control-type message communication between SCIF endpoints. The SCIF RMA
 * APIs are expected to provide better performance for transfer sizes of
 * 1024 bytes or longer for the current MIC hardware and software
 * implementation.
 *
 * scif_send() will block until the entire message is sent if SCIF_SEND_BLOCK
 * is passed as the flags argument.
 *
 * Return:
 * Upon successful completion, scif_send() returns the number of bytes sent;
 * otherwise in user mode -1 is returned and errno is set to indicate the
 * error; in kernel mode the negative of one of the following errors is
 * returned.
 *
 * Errors:
 * EBADF, ENOTTY - epd is not a valid endpoint descriptor
 * ECONNRESET - Connection reset by peer
 * EINVAL - flags is invalid, or len is negative
 * ENODEV - The remote node is lost or existed, but is not currently in the
 * network since it may have crashed
 * ENOMEM - Not enough space
 * ENOTCONN - The endpoint is not connected
 */
int scif_send(scif_epd_t epd, void *msg, int len, int flags);

/**
 * scif_recv() - Receive a message
 * @epd:	endpoint descriptor
 * @msg:	message buffer address
 * @len:	message buffer length
 * @flags:	blocking mode flags
 *
 * scif_recv() receives data from the peer of endpoint epd. Up to len bytes of
 * data are copied to memory starting at address msg. On successful execution
 * the return value of scif_recv() is the number of bytes that were received,
 * and is zero if no bytes were received because len was zero. scif_recv() may
 * be called only when the endpoint is in a connected state.
 *
 * If a scif_recv() call is non-blocking, then it receives only those bytes
 * which can be received without waiting, up to a maximum of len bytes.
 *
 * If a scif_recv() call is blocking, then it normally returns after receiving
 * all len bytes. If the blocking call was interrupted due to a disconnection,
 * subsequent calls to scif_recv() will copy all bytes received upto the point
 * of disconnection.
 *
 * In user mode, the select() and poll() functions can be used to determine
 * when data is available to be received. In kernel mode, the scif_poll()
 * function may be used for this purpose.
 *
 * It is recommended that scif_send()/scif_recv() only be used for short
 * control-type message communication between SCIF endpoints. The SCIF RMA
 * APIs are expected to provide better performance for transfer sizes of
 * 1024 bytes or longer for the current MIC hardware and software
 * implementation.
 *
 * scif_recv() will block until the entire message is received if
 * SCIF_RECV_BLOCK is passed as the flags argument.
 *
 * Return:
 * Upon successful completion, scif_recv() returns the number of bytes
 * received; otherwise in user mode -1 is returned and errno is set to
 * indicate the error; in kernel mode the negative of one of the following
 * errors is returned.
 *
 * Errors:
 * EAGAIN - The destination node is returning from a low power state
 * EBADF, ENOTTY - epd is not a valid endpoint descriptor
 * ECONNRESET - Connection reset by peer
 * EINVAL - flags is invalid, or len is negative
 * ENODEV - The remote node is lost or existed, but is not currently in the
 * network since it may have crashed
 * ENOMEM - Not enough space
 * ENOTCONN - The endpoint is not connected
 */
int scif_recv(scif_epd_t epd, void *msg, int len, int flags);

/**
 * scif_register() - Mark a memory region for remote access.
 * @epd:		endpoint descriptor
 * @addr:		starting virtual address
 * @len:		length of range
 * @offset:		offset of window
 * @prot_flags:		read/write protection flags
 * @map_flags:		mapping flags
 *
 * The scif_register() function opens a window, a range of whole pages of the
 * registered address space of the endpoint epd, starting at offset po and
 * continuing for len bytes. The value of po, further described below, is a
 * function of the parameters offset and len, and the value of map_flags. Each
 * page of the window represents the physical memory page which backs the
 * corresponding page of the range of virtual address pages starting at addr
 * and continuing for len bytes. addr and len are constrained to be multiples
 * of the page size. A successful scif_register() call returns po.
 *
 * When SCIF_MAP_FIXED is set in the map_flags argument, po will be offset
 * exactly, and offset is constrained to be a multiple of the page size. The
 * mapping established by scif_register() will not replace any existing
 * registration; an error is returned if any page within the range [offset,
 * offset + len - 1] intersects an existing window.
 *
 * When SCIF_MAP_FIXED is not set, the implementation uses offset in an
 * implementation-defined manner to arrive at po. The po value so chosen will
 * be an area of the registered address space that the implementation deems
 * suitable for a mapping of len bytes. An offset value of 0 is interpreted as
 * granting the implementation complete freedom in selecting po, subject to
 * constraints described below. A non-zero value of offset is taken to be a
 * suggestion of an offset near which the mapping should be placed. When the
 * implementation selects a value for po, it does not replace any extant
 * window. In all cases, po will be a multiple of the page size.
 *
 * The physical pages which are so represented by a window are available for
 * access in calls to mmap(), scif_readfrom(), scif_writeto(),
 * scif_vreadfrom(), and scif_vwriteto(). While a window is registered, the
 * physical pages represented by the window will not be reused by the memory
 * subsystem for any other purpose. Note that the same physical page may be
 * represented by multiple windows.
 *
 * Subsequent operations which change the memory pages to which virtual
 * addresses are mapped (such as mmap(), munmap()) have no effect on
 * existing window.
 *
 * If the process will fork(), it is recommended that the registered
 * virtual address range be marked with MADV_DONTFORK. Doing so will prevent
 * problems due to copy-on-write semantics.
 *
 * The prot_flags argument is formed by OR'ing together one or more of the
 * following values.
 * SCIF_PROT_READ - allow read operations from the window
 * SCIF_PROT_WRITE - allow write operations to the window
 *
 * Return:
 * Upon successful completion, scif_register() returns the offset at which the
 * mapping was placed (po); otherwise in user mode SCIF_REGISTER_FAILED (that
 * is (off_t *)-1) is returned and errno is set to indicate the error; in
 * kernel mode the negative of one of the following errors is returned.
 *
 * Errors:
 * EADDRINUSE - SCIF_MAP_FIXED is set in map_flags, and pages in the range
 * [offset, offset + len -1] are already registered
 * EAGAIN - The mapping could not be performed due to lack of resources
 * EBADF, ENOTTY - epd is not a valid endpoint descriptor
 * ECONNRESET - Connection reset by peer
 * EINVAL - map_flags is invalid, or prot_flags is invalid, or SCIF_MAP_FIXED is
 * set in flags, and offset is not a multiple of the page size, or addr is not a
 * multiple of the page size, or len is not a multiple of the page size, or is
 * 0, or offset is negative
 * ENODEV - The remote node is lost or existed, but is not currently in the
 * network since it may have crashed
 * ENOMEM - Not enough space
 * ENOTCONN -The endpoint is not connected
 */
off_t scif_register(scif_epd_t epd, void *addr, size_t len, off_t offset,
		    int prot_flags, int map_flags);

/**
 * scif_unregister() - Mark a memory region for remote access.
 * @epd:	endpoint descriptor
 * @offset:	start of range to unregister
 * @len:	length of range to unregister
 *
 * The scif_unregister() function closes those previously registered windows
 * which are entirely within the range [offset, offset + len - 1]. It is an
 * error to specify a range which intersects only a subrange of a window.
 *
 * On a successful return, pages within the window may no longer be specified
 * in calls to mmap(), scif_readfrom(), scif_writeto(), scif_vreadfrom(),
 * scif_vwriteto(), scif_get_pages, and scif_fence_signal(). The window,
 * however, continues to exist until all previous references against it are
 * removed. A window is referenced if there is a mapping to it created by
 * mmap(), or if scif_get_pages() was called against the window
 * (and the pages have not been returned via scif_put_pages()). A window is
 * also referenced while an RMA, in which some range of the window is a source
 * or destination, is in progress. Finally a window is referenced while some
 * offset in that window was specified to scif_fence_signal(), and the RMAs
 * marked by that call to scif_fence_signal() have not completed. While a
 * window is in this state, its registered address space pages are not
 * available for use in a new registered window.
 *
 * When all such references to the window have been removed, its references to
 * all the physical pages which it represents are removed. Similarly, the
 * registered address space pages of the window become available for
 * registration in a new window.
 *
 * Return:
 * Upon successful completion, scif_unregister() returns 0; otherwise in user
 * mode -1 is returned and errno is set to indicate the error; in kernel mode
 * the negative of one of the following errors is returned. In the event of an
 * error, no windows are unregistered.
 *
 * Errors:
 * EBADF, ENOTTY - epd is not a valid endpoint descriptor
 * ECONNRESET - Connection reset by peer
 * EINVAL - the range [offset, offset + len - 1] intersects a subrange of a
 * window, or offset is negative
 * ENODEV - The remote node is lost or existed, but is not currently in the
 * network since it may have crashed
 * ENOTCONN - The endpoint is not connected
 * ENXIO - Offsets in the range [offset, offset + len - 1] are invalid for the
 * registered address space of epd
 */
int scif_unregister(scif_epd_t epd, off_t offset, size_t len);

/**
 * scif_readfrom() - Copy from a remote address space
 * @epd:	endpoint descriptor
 * @loffset:	offset in local registered address space to
 *		which to copy
 * @len:	length of range to copy
 * @roffset:	offset in remote registered address space
 *		from which to copy
 * @rma_flags:	transfer mode flags
 *
 * scif_readfrom() copies len bytes from the remote registered address space of
 * the peer of endpoint epd, starting at the offset roffset to the local
 * registered address space of epd, starting at the offset loffset.
 *
 * Each of the specified ranges [loffset, loffset + len - 1] and [roffset,
 * roffset + len - 1] must be within some registered window or windows of the
 * local and remote nodes. A range may intersect multiple registered windows,
 * but only if those windows are contiguous in the registered address space.
 *
 * If rma_flags includes SCIF_RMA_USECPU, then the data is copied using
 * programmed read/writes. Otherwise the data is copied using DMA. If rma_-
 * flags includes SCIF_RMA_SYNC, then scif_readfrom() will return after the
 * transfer is complete. Otherwise, the transfer may be performed asynchron-
 * ously. The order in which any two asynchronous RMA operations complete
 * is non-deterministic. The synchronization functions, scif_fence_mark()/
 * scif_fence_wait() and scif_fence_signal(), can be used to synchronize to
 * the completion of asynchronous RMA operations on the same endpoint.
 *
 * The DMA transfer of individual bytes is not guaranteed to complete in
 * address order. If rma_flags includes SCIF_RMA_ORDERED, then the last
 * cacheline or partial cacheline of the source range will become visible on
 * the destination node after all other transferred data in the source
 * range has become visible on the destination node.
 *
 * The optimal DMA performance will likely be realized if both
 * loffset and roffset are cacheline aligned (are a multiple of 64). Lower
 * performance will likely be realized if loffset and roffset are not
 * cacheline aligned but are separated by some multiple of 64. The lowest level
 * of performance is likely if loffset and roffset are not separated by a
 * multiple of 64.
 *
 * The rma_flags argument is formed by ORing together zero or more of the
 * following values.
 * SCIF_RMA_USECPU - perform the transfer using the CPU, otherwise use the DMA
 *	engine.
 * SCIF_RMA_SYNC - perform the transfer synchronously, returning after the
 *		transfer has completed. Passing this flag results in the
 *		current implementation busy waiting and consuming CPU cycles
 *		while the DMA transfer is in progress for best performance by
 *		avoiding the interrupt latency.
 * SCIF_RMA_ORDERED - ensure that the last cacheline or partial cacheline of
 *		the source range becomes visible on the destination node
 *		after all other transferred data in the source range has
 *		become visible on the destination
 *
 * Return:
 * Upon successful completion, scif_readfrom() returns 0; otherwise in user
 * mode -1 is returned and errno is set to indicate the error; in kernel mode
 * the negative of one of the following errors is returned.
 *
 * Errors:
 * EACCESS - Attempt to write to a read-only range
 * EBADF, ENOTTY - epd is not a valid endpoint descriptor
 * ECONNRESET - Connection reset by peer
 * EINVAL - rma_flags is invalid
 * ENODEV - The remote node is lost or existed, but is not currently in the
 * network since it may have crashed
 * ENOTCONN - The endpoint is not connected
 * ENXIO - The range [loffset, loffset + len - 1] is invalid for the registered
 * address space of epd, or, The range [roffset, roffset + len - 1] is invalid
 * for the registered address space of the peer of epd, or loffset or roffset
 * is negative
 */
int scif_readfrom(scif_epd_t epd, off_t loffset, size_t len, off_t
		  roffset, int rma_flags);

/**
 * scif_writeto() - Copy to a remote address space
 * @epd:	endpoint descriptor
 * @loffset:	offset in local registered address space
 *		from which to copy
 * @len:	length of range to copy
 * @roffset:	offset in remote registered address space to
 *		which to copy
 * @rma_flags:	transfer mode flags
 *
 * scif_writeto() copies len bytes from the local registered address space of
 * epd, starting at the offset loffset to the remote registered address space
 * of the peer of endpoint epd, starting at the offset roffset.
 *
 * Each of the specified ranges [loffset, loffset + len - 1] and [roffset,
 * roffset + len - 1] must be within some registered window or windows of the
 * local and remote nodes. A range may intersect multiple registered windows,
 * but only if those windows are contiguous in the registered address space.
 *
 * If rma_flags includes SCIF_RMA_USECPU, then the data is copied using
 * programmed read/writes. Otherwise the data is copied using DMA. If rma_-
 * flags includes SCIF_RMA_SYNC, then scif_writeto() will return after the
 * transfer is complete. Otherwise, the transfer may be performed asynchron-
 * ously. The order in which any two asynchronous RMA operations complete
 * is non-deterministic. The synchronization functions, scif_fence_mark()/
 * scif_fence_wait() and scif_fence_signal(), can be used to synchronize to
 * the completion of asynchronous RMA operations on the same endpoint.
 *
 * The DMA transfer of individual bytes is not guaranteed to complete in
 * address order. If rma_flags includes SCIF_RMA_ORDERED, then the last
 * cacheline or partial cacheline of the source range will become visible on
 * the destination node after all other transferred data in the source
 * range has become visible on the destination node.
 *
 * The optimal DMA performance will likely be realized if both
 * loffset and roffset are cacheline aligned (are a multiple of 64). Lower
 * performance will likely be realized if loffset and roffset are not cacheline
 * aligned but are separated by some multiple of 64. The lowest level of
 * performance is likely if loffset and roffset are not separated by a multiple
 * of 64.
 *
 * The rma_flags argument is formed by ORing together zero or more of the
 * following values.
 * SCIF_RMA_USECPU - perform the transfer using the CPU, otherwise use the DMA
 *			engine.
 * SCIF_RMA_SYNC - perform the transfer synchronously, returning after the
 *		transfer has completed. Passing this flag results in the
 *		current implementation busy waiting and consuming CPU cycles
 *		while the DMA transfer is in progress for best performance by
 *		avoiding the interrupt latency.
 * SCIF_RMA_ORDERED - ensure that the last cacheline or partial cacheline of
 *		the source range becomes visible on the destination node
 *		after all other transferred data in the source range has
 *		become visible on the destination
 *
 * Return:
 * Upon successful completion, scif_readfrom() returns 0; otherwise in user
 * mode -1 is returned and errno is set to indicate the error; in kernel mode
 * the negative of one of the following errors is returned.
 *
 * Errors:
 * EACCESS - Attempt to write to a read-only range
 * EBADF, ENOTTY - epd is not a valid endpoint descriptor
 * ECONNRESET - Connection reset by peer
 * EINVAL - rma_flags is invalid
 * ENODEV - The remote node is lost or existed, but is not currently in the
 * network since it may have crashed
 * ENOTCONN - The endpoint is not connected
 * ENXIO - The range [loffset, loffset + len - 1] is invalid for the registered
 * address space of epd, or, The range [roffset , roffset + len -1] is invalid
 * for the registered address space of the peer of epd, or loffset or roffset
 * is negative
 */
int scif_writeto(scif_epd_t epd, off_t loffset, size_t len, off_t
		 roffset, int rma_flags);

/**
 * scif_vreadfrom() - Copy from a remote address space
 * @epd:	endpoint descriptor
 * @addr:	address to which to copy
 * @len:	length of range to copy
 * @roffset:	offset in remote registered address space
 *		from which to copy
 * @rma_flags:	transfer mode flags
 *
 * scif_vreadfrom() copies len bytes from the remote registered address
 * space of the peer of endpoint epd, starting at the offset roffset, to local
 * memory, starting at addr.
 *
 * The specified range [roffset, roffset + len - 1] must be within some
 * registered window or windows of the remote nodes. The range may
 * intersect multiple registered windows, but only if those windows are
 * contiguous in the registered address space.
 *
 * If rma_flags includes SCIF_RMA_USECPU, then the data is copied using
 * programmed read/writes. Otherwise the data is copied using DMA. If rma_-
 * flags includes SCIF_RMA_SYNC, then scif_vreadfrom() will return after the
 * transfer is complete. Otherwise, the transfer may be performed asynchron-
 * ously. The order in which any two asynchronous RMA operations complete
 * is non-deterministic. The synchronization functions, scif_fence_mark()/
 * scif_fence_wait() and scif_fence_signal(), can be used to synchronize to
 * the completion of asynchronous RMA operations on the same endpoint.
 *
 * The DMA transfer of individual bytes is not guaranteed to complete in
 * address order. If rma_flags includes SCIF_RMA_ORDERED, then the last
 * cacheline or partial cacheline of the source range will become visible on
 * the destination node after all other transferred data in the source
 * range has become visible on the destination node.
 *
 * If rma_flags includes SCIF_RMA_USECACHE, then the physical pages which back
 * the specified local memory range may be remain in a pinned state even after
 * the specified transfer completes. This may reduce overhead if some or all of
 * the same virtual address range is referenced in a subsequent call of
 * scif_vreadfrom() or scif_vwriteto().
 *
 * The optimal DMA performance will likely be realized if both
 * addr and roffset are cacheline aligned (are a multiple of 64). Lower
 * performance will likely be realized if addr and roffset are not
 * cacheline aligned but are separated by some multiple of 64. The lowest level
 * of performance is likely if addr and roffset are not separated by a
 * multiple of 64.
 *
 * The rma_flags argument is formed by ORing together zero or more of the
 * following values.
 * SCIF_RMA_USECPU - perform the transfer using the CPU, otherwise use the DMA
 *	engine.
 * SCIF_RMA_USECACHE - enable registration caching
 * SCIF_RMA_SYNC - perform the transfer synchronously, returning after the
 *		transfer has completed. Passing this flag results in the
 *		current implementation busy waiting and consuming CPU cycles
 *		while the DMA transfer is in progress for best performance by
 *		avoiding the interrupt latency.
 * SCIF_RMA_ORDERED - ensure that the last cacheline or partial cacheline of
 *	the source range becomes visible on the destination node
 *	after all other transferred data in the source range has
 *	become visible on the destination
 *
 * Return:
 * Upon successful completion, scif_vreadfrom() returns 0; otherwise in user
 * mode -1 is returned and errno is set to indicate the error; in kernel mode
 * the negative of one of the following errors is returned.
 *
 * Errors:
 * EACCESS - Attempt to write to a read-only range
 * EBADF, ENOTTY - epd is not a valid endpoint descriptor
 * ECONNRESET - Connection reset by peer
 * EINVAL - rma_flags is invalid
 * ENODEV - The remote node is lost or existed, but is not currently in the
 * network since it may have crashed
 * ENOTCONN - The endpoint is not connected
 * ENXIO - Offsets in the range [roffset, roffset + len - 1] are invalid for the
 * registered address space of epd
 */
int scif_vreadfrom(scif_epd_t epd, void *addr, size_t len, off_t roffset,
		   int rma_flags);

/**
 * scif_vwriteto() - Copy to a remote address space
 * @epd:	endpoint descriptor
 * @addr:	address from which to copy
 * @len:	length of range to copy
 * @roffset:	offset in remote registered address space to
 *		which to copy
 * @rma_flags:	transfer mode flags
 *
 * scif_vwriteto() copies len bytes from the local memory, starting at addr, to
 * the remote registered address space of the peer of endpoint epd, starting at
 * the offset roffset.
 *
 * The specified range [roffset, roffset + len - 1] must be within some
 * registered window or windows of the remote nodes. The range may intersect
 * multiple registered windows, but only if those windows are contiguous in the
 * registered address space.
 *
 * If rma_flags includes SCIF_RMA_USECPU, then the data is copied using
 * programmed read/writes. Otherwise the data is copied using DMA. If rma_-
 * flags includes SCIF_RMA_SYNC, then scif_vwriteto() will return after the
 * transfer is complete. Otherwise, the transfer may be performed asynchron-
 * ously. The order in which any two asynchronous RMA operations complete
 * is non-deterministic. The synchronization functions, scif_fence_mark()/
 * scif_fence_wait() and scif_fence_signal(), can be used to synchronize to
 * the completion of asynchronous RMA operations on the same endpoint.
 *
 * The DMA transfer of individual bytes is not guaranteed to complete in
 * address order. If rma_flags includes SCIF_RMA_ORDERED, then the last
 * cacheline or partial cacheline of the source range will become visible on
 * the destination node after all other transferred data in the source
 * range has become visible on the destination node.
 *
 * If rma_flags includes SCIF_RMA_USECACHE, then the physical pages which back
 * the specified local memory range may be remain in a pinned state even after
 * the specified transfer completes. This may reduce overhead if some or all of
 * the same virtual address range is referenced in a subsequent call of
 * scif_vreadfrom() or scif_vwriteto().
 *
 * The optimal DMA performance will likely be realized if both
 * addr and offset are cacheline aligned (are a multiple of 64). Lower
 * performance will likely be realized if addr and offset are not cacheline
 * aligned but are separated by some multiple of 64. The lowest level of
 * performance is likely if addr and offset are not separated by a multiple of
 * 64.
 *
 * The rma_flags argument is formed by ORing together zero or more of the
 * following values.
 * SCIF_RMA_USECPU - perform the transfer using the CPU, otherwise use the DMA
 *	engine.
 * SCIF_RMA_USECACHE - allow registration caching
 * SCIF_RMA_SYNC - perform the transfer synchronously, returning after the
 *		transfer has completed. Passing this flag results in the
 *		current implementation busy waiting and consuming CPU cycles
 *		while the DMA transfer is in progress for best performance by
 *		avoiding the interrupt latency.
 * SCIF_RMA_ORDERED - ensure that the last cacheline or partial cacheline of
 *		the source range becomes visible on the destination node
 *		after all other transferred data in the source range has
 *		become visible on the destination
 *
 * Return:
 * Upon successful completion, scif_vwriteto() returns 0; otherwise in user
 * mode -1 is returned and errno is set to indicate the error; in kernel mode
 * the negative of one of the following errors is returned.
 *
 * Errors:
 * EACCESS - Attempt to write to a read-only range
 * EBADF, ENOTTY - epd is not a valid endpoint descriptor
 * ECONNRESET - Connection reset by peer
 * EINVAL - rma_flags is invalid
 * ENODEV - The remote node is lost or existed, but is not currently in the
 * network since it may have crashed
 * ENOTCONN - The endpoint is not connected
 * ENXIO - Offsets in the range [roffset, roffset + len - 1] are invalid for the
 * registered address space of epd
 */
int scif_vwriteto(scif_epd_t epd, void *addr, size_t len, off_t roffset,
		  int rma_flags);

/**
 * scif_fence_mark() - Mark previously issued RMAs
 * @epd:	endpoint descriptor
 * @flags:	control flags
 * @mark:	marked value returned as output.
 *
 * scif_fence_mark() returns after marking the current set of all uncompleted
 * RMAs initiated through the endpoint epd or the current set of all
 * uncompleted RMAs initiated through the peer of endpoint epd. The RMAs are
 * marked with a value returned at mark. The application may subsequently call
 * scif_fence_wait(), passing the value returned at mark, to await completion
 * of all RMAs so marked.
 *
 * The flags argument has exactly one of the following values.
 * SCIF_FENCE_INIT_SELF - RMA operations initiated through endpoint
 *	epd are marked
 * SCIF_FENCE_INIT_PEER - RMA operations initiated through the peer
 *	of endpoint epd are marked
 *
 * Return:
 * Upon successful completion, scif_fence_mark() returns 0; otherwise in user
 * mode -1 is returned and errno is set to indicate the error; in kernel mode
 * the negative of one of the following errors is returned.
 *
 * Errors:
 * EBADF, ENOTTY - epd is not a valid endpoint descriptor
 * ECONNRESET - Connection reset by peer
 * EINVAL - flags is invalid
 * ENODEV - The remote node is lost or existed, but is not currently in the
 * network since it may have crashed
 * ENOTCONN - The endpoint is not connected
 * ENOMEM - Insufficient kernel memory was available
 */
int scif_fence_mark(scif_epd_t epd, int flags, int *mark);

/**
 * scif_fence_wait() - Wait for completion of marked RMAs
 * @epd:	endpoint descriptor
 * @mark:	mark request
 *
 * scif_fence_wait() returns after all RMAs marked with mark have completed.
 * The value passed in mark must have been obtained in a previous call to
 * scif_fence_mark().
 *
 * Return:
 * Upon successful completion, scif_fence_wait() returns 0; otherwise in user
 * mode -1 is returned and errno is set to indicate the error; in kernel mode
 * the negative of one of the following errors is returned.
 *
 * Errors:
 * EBADF, ENOTTY - epd is not a valid endpoint descriptor
 * ECONNRESET - Connection reset by peer
 * ENODEV - The remote node is lost or existed, but is not currently in the
 * network since it may have crashed
 * ENOTCONN - The endpoint is not connected
 * ENOMEM - Insufficient kernel memory was available
 */
int scif_fence_wait(scif_epd_t epd, int mark);

/**
 * scif_fence_signal() - Request a memory update on completion of RMAs
 * @epd:	endpoint descriptor
 * @loff:	local offset
 * @lval:	local value to write to loffset
 * @roff:	remote offset
 * @rval:	remote value to write to roffset
 * @flags:	flags
 *
 * scif_fence_signal() returns after marking the current set of all uncompleted
 * RMAs initiated through the endpoint epd or marking the current set of all
 * uncompleted RMAs initiated through the peer of endpoint epd.
 *
 * If flags includes SCIF_SIGNAL_LOCAL, then on completion of the RMAs in the
 * marked set, lval is written to memory at the address corresponding to offset
 * loff in the local registered address space of epd. loff must be within a
 * registered window. If flags includes SCIF_SIGNAL_REMOTE, then on completion
 * of the RMAs in the marked set, rval is written to memory at the address
 * corresponding to offset roff in the remote registered address space of epd.
 * roff must be within a remote registered window of the peer of epd. Note
 * that any specified offset must be DWORD (4 byte / 32 bit) aligned.
 *
 * The flags argument is formed by OR'ing together the following.
 * Exactly one of the following values.
 * SCIF_FENCE_INIT_SELF - RMA operations initiated through endpoint
 *	epd are marked
 * SCIF_FENCE_INIT_PEER - RMA operations initiated through the peer
 *	of endpoint epd are marked
 * One or more of the following values.
 * SCIF_SIGNAL_LOCAL - On completion of the marked set of RMAs, write lval to
 *	memory at the address corresponding to offset loff in the local
 *	registered address space of epd.
 * SCIF_SIGNAL_REMOTE - On completion of the marked set of RMAs, write rval to
 *	memory at the address corresponding to offset roff in the remote
 *	registered address space of epd.
 *
 * Return:
 * Upon successful completion, scif_fence_signal() returns 0; otherwise in
 * user mode -1 is returned and errno is set to indicate the error; in kernel
 * mode the negative of one of the following errors is returned.
 *
 * Errors:
 * EBADF, ENOTTY - epd is not a valid endpoint descriptor
 * ECONNRESET - Connection reset by peer
 * EINVAL - flags is invalid, or loff or roff are not DWORD aligned
 * ENODEV - The remote node is lost or existed, but is not currently in the
 * network since it may have crashed
 * ENOTCONN - The endpoint is not connected
 * ENXIO - loff is invalid for the registered address of epd, or roff is invalid
 * for the registered address space, of the peer of epd
 */
int scif_fence_signal(scif_epd_t epd, off_t loff, u64 lval, off_t roff,
		      u64 rval, int flags);

/**
 * scif_get_node_ids() - Return information about online nodes
 * @nodes:	array in which to return online node IDs
 * @len:	number of entries in the nodes array
 * @self:	address to place the node ID of the local node
 *
 * scif_get_node_ids() fills in the nodes array with up to len node IDs of the
 * nodes in the SCIF network. If there is not enough space in nodes, as
 * indicated by the len parameter, only len node IDs are returned in nodes. The
 * return value of scif_get_node_ids() is the total number of nodes currently in
 * the SCIF network. By checking the return value against the len parameter,
 * the user may determine if enough space for nodes was allocated.
 *
 * The node ID of the local node is returned at self.
 *
 * Return:
 * Upon successful completion, scif_get_node_ids() returns the actual number of
 * online nodes in the SCIF network including 'self'; otherwise in user mode
 * -1 is returned and errno is set to indicate the error; in kernel mode no
 * errors are returned.
 */
int scif_get_node_ids(u16 *nodes, int len, u16 *self);

/**
 * scif_pin_pages() - Pin a set of pages
 * @addr:		Virtual address of range to pin
 * @len:		Length of range to pin
 * @prot_flags:		Page protection flags
 * @map_flags:		Page classification flags
 * @pinned_pages:	Handle to pinned pages
 *
 * scif_pin_pages() pins (locks in physical memory) the physical pages which
 * back the range of virtual address pages starting at addr and continuing for
 * len bytes. addr and len are constrained to be multiples of the page size. A
 * successful scif_pin_pages() call returns a handle to pinned_pages which may
 * be used in subsequent calls to scif_register_pinned_pages().
 *
 * The pages will remain pinned as long as there is a reference against the
 * scif_pinned_pages_t value returned by scif_pin_pages() and until
 * scif_unpin_pages() is called, passing the scif_pinned_pages_t value. A
 * reference is added to a scif_pinned_pages_t value each time a window is
 * created by calling scif_register_pinned_pages() and passing the
 * scif_pinned_pages_t value. A reference is removed from a
 * scif_pinned_pages_t value each time such a window is deleted.
 *
 * Subsequent operations which change the memory pages to which virtual
 * addresses are mapped (such as mmap(), munmap()) have no effect on the
 * scif_pinned_pages_t value or windows created against it.
 *
 * If the process will fork(), it is recommended that the registered
 * virtual address range be marked with MADV_DONTFORK. Doing so will prevent
 * problems due to copy-on-write semantics.
 *
 * The prot_flags argument is formed by OR'ing together one or more of the
 * following values.
 * SCIF_PROT_READ - allow read operations against the pages
 * SCIF_PROT_WRITE - allow write operations against the pages
 * The map_flags argument can be set as SCIF_MAP_KERNEL to interpret addr as a
 * kernel space address. By default, addr is interpreted as a user space
 * address.
 *
 * Return:
 * Upon successful completion, scif_pin_pages() returns 0; otherwise the
 * negative of one of the following errors is returned.
 *
 * Errors:
 * EINVAL - prot_flags is invalid, map_flags is invalid, or offset is negative
 * ENOMEM - Not enough space
 */
int scif_pin_pages(void *addr, size_t len, int prot_flags, int map_flags,
		   scif_pinned_pages_t *pinned_pages);

/**
 * scif_unpin_pages() - Unpin a set of pages
 * @pinned_pages:	Handle to pinned pages to be unpinned
 *
 * scif_unpin_pages() prevents scif_register_pinned_pages() from registering new
 * windows against pinned_pages. The physical pages represented by pinned_pages
 * will remain pinned until all windows previously registered against
 * pinned_pages are deleted (the window is scif_unregister()'d and all
 * references to the window are removed (see scif_unregister()).
 *
 * pinned_pages must have been obtain from a previous call to scif_pin_pages().
 * After calling scif_unpin_pages(), it is an error to pass pinned_pages to
 * scif_register_pinned_pages().
 *
 * Return:
 * Upon successful completion, scif_unpin_pages() returns 0; otherwise the
 * negative of one of the following errors is returned.
 *
 * Errors:
 * EINVAL - pinned_pages is not valid
 */
int scif_unpin_pages(scif_pinned_pages_t pinned_pages);

/**
 * scif_register_pinned_pages() - Mark a memory region for remote access.
 * @epd:		endpoint descriptor
 * @pinned_pages:	Handle to pinned pages
 * @offset:		Registered address space offset
 * @map_flags:		Flags which control where pages are mapped
 *
 * The scif_register_pinned_pages() function opens a window, a range of whole
 * pages of the registered address space of the endpoint epd, starting at
 * offset po. The value of po, further described below, is a function of the
 * parameters offset and pinned_pages, and the value of map_flags. Each page of
 * the window represents a corresponding physical memory page of the range
 * represented by pinned_pages; the length of the window is the same as the
 * length of range represented by pinned_pages. A successful
 * scif_register_pinned_pages() call returns po as the return value.
 *
 * When SCIF_MAP_FIXED is set in the map_flags argument, po will be offset
 * exactly, and offset is constrained to be a multiple of the page size. The
 * mapping established by scif_register_pinned_pages() will not replace any
 * existing registration; an error is returned if any page of the new window
 * would intersect an existing window.
 *
 * When SCIF_MAP_FIXED is not set, the implementation uses offset in an
 * implementation-defined manner to arrive at po. The po so chosen will be an
 * area of the registered address space that the implementation deems suitable
 * for a mapping of the required size. An offset value of 0 is interpreted as
 * granting the implementation complete freedom in selecting po, subject to
 * constraints described below. A non-zero value of offset is taken to be a
 * suggestion of an offset near which the mapping should be placed. When the
 * implementation selects a value for po, it does not replace any extant
 * window. In all cases, po will be a multiple of the page size.
 *
 * The physical pages which are so represented by a window are available for
 * access in calls to scif_get_pages(), scif_readfrom(), scif_writeto(),
 * scif_vreadfrom(), and scif_vwriteto(). While a window is registered, the
 * physical pages represented by the window will not be reused by the memory
 * subsystem for any other purpose. Note that the same physical page may be
 * represented by multiple windows.
 *
 * Windows created by scif_register_pinned_pages() are unregistered by
 * scif_unregister().
 *
 * The map_flags argument can be set to SCIF_MAP_FIXED which interprets a
 * fixed offset.
 *
 * Return:
 * Upon successful completion, scif_register_pinned_pages() returns the offset
 * at which the mapping was placed (po); otherwise the negative of one of the
 * following errors is returned.
 *
 * Errors:
 * EADDRINUSE - SCIF_MAP_FIXED is set in map_flags and pages in the new window
 * would intersect an existing window
 * EAGAIN - The mapping could not be performed due to lack of resources
 * ECONNRESET - Connection reset by peer
 * EINVAL - map_flags is invalid, or SCIF_MAP_FIXED is set in map_flags, and
 * offset is not a multiple of the page size, or offset is negative
 * ENODEV - The remote node is lost or existed, but is not currently in the
 * network since it may have crashed
 * ENOMEM - Not enough space
 * ENOTCONN - The endpoint is not connected
 */
off_t scif_register_pinned_pages(scif_epd_t epd,
				 scif_pinned_pages_t pinned_pages,
				 off_t offset, int map_flags);

/**
 * scif_get_pages() - Add references to remote registered pages
 * @epd:	endpoint descriptor
 * @offset:	remote registered offset
 * @len:	length of range of pages
 * @pages:	returned scif_range structure
 *
 * scif_get_pages() returns the addresses of the physical pages represented by
 * those pages of the registered address space of the peer of epd, starting at
 * offset and continuing for len bytes. offset and len are constrained to be
 * multiples of the page size.
 *
 * All of the pages in the specified range [offset, offset + len - 1] must be
 * within a single window of the registered address space of the peer of epd.
 *
 * The addresses are returned as a virtually contiguous array pointed to by the
 * phys_addr component of the scif_range structure whose address is returned in
 * pages. The nr_pages component of scif_range is the length of the array. The
 * prot_flags component of scif_range holds the protection flag value passed
 * when the pages were registered.
 *
 * Each physical page whose address is returned by scif_get_pages() remains
 * available and will not be released for reuse until the scif_range structure
 * is returned in a call to scif_put_pages(). The scif_range structure returned
 * by scif_get_pages() must be unmodified.
 *
 * It is an error to call scif_close() on an endpoint on which a scif_range
 * structure of that endpoint has not been returned to scif_put_pages().
 *
 * Return:
 * Upon successful completion, scif_get_pages() returns 0; otherwise the
 * negative of one of the following errors is returned.
 * Errors:
 * ECONNRESET - Connection reset by peer.
 * EINVAL - offset is not a multiple of the page size, or offset is negative, or
 * len is not a multiple of the page size
 * ENODEV - The remote node is lost or existed, but is not currently in the
 * network since it may have crashed
 * ENOTCONN - The endpoint is not connected
 * ENXIO - Offsets in the range [offset, offset + len - 1] are invalid
 * for the registered address space of the peer epd
 */
int scif_get_pages(scif_epd_t epd, off_t offset, size_t len,
		   struct scif_range **pages);

/**
 * scif_put_pages() - Remove references from remote registered pages
 * @pages:	pages to be returned
 *
 * scif_put_pages() releases a scif_range structure previously obtained by
 * calling scif_get_pages(). The physical pages represented by pages may
 * be reused when the window which represented those pages is unregistered.
 * Therefore, those pages must not be accessed after calling scif_put_pages().
 *
 * Return:
 * Upon successful completion, scif_put_pages() returns 0; otherwise the
 * negative of one of the following errors is returned.
 * Errors:
 * EINVAL - pages does not point to a valid scif_range structure, or
 * the scif_range structure pointed to by pages was already returned
 * ENODEV - The remote node is lost or existed, but is not currently in the
 * network since it may have crashed
 * ENOTCONN - The endpoint is not connected
 */
int scif_put_pages(struct scif_range *pages);

/**
 * scif_poll() - Wait for some event on an endpoint
 * @epds:	Array of endpoint descriptors
 * @nepds:	Length of epds
 * @timeout:	Upper limit on time for which scif_poll() will block
 *
 * scif_poll() waits for one of a set of endpoints to become ready to perform
 * an I/O operation.
 *
 * The epds argument specifies the endpoint descriptors to be examined and the
 * events of interest for each endpoint descriptor. epds is a pointer to an
 * array with one member for each open endpoint descriptor of interest.
 *
 * The number of items in the epds array is specified in nepds. The epd field
 * of scif_pollepd is an endpoint descriptor of an open endpoint. The field
 * events is a bitmask specifying the events which the application is
 * interested in. The field revents is an output parameter, filled by the
 * kernel with the events that actually occurred. The bits returned in revents
 * can include any of those specified in events, or one of the values POLLERR,
 * POLLHUP, or POLLNVAL. (These three bits are meaningless in the events
 * field, and will be set in the revents field whenever the corresponding
 * condition is true.)
 *
 * If none of the events requested (and no error) has occurred for any of the
 * endpoint descriptors, then scif_poll() blocks until one of the events occurs.
 *
 * The timeout argument specifies an upper limit on the time for which
 * scif_poll() will block, in milliseconds. Specifying a negative value in
 * timeout means an infinite timeout.
 *
 * The following bits may be set in events and returned in revents.
 * POLLIN - Data may be received without blocking. For a connected
 * endpoint, this means that scif_recv() may be called without blocking. For a
 * listening endpoint, this means that scif_accept() may be called without
 * blocking.
 * POLLOUT - Data may be sent without blocking. For a connected endpoint, this
 * means that scif_send() may be called without blocking. POLLOUT may also be
 * used to block waiting for a non-blocking connect to complete. This bit value
 * has no meaning for a listening endpoint and is ignored if specified.
 *
 * The following bits are only returned in revents, and are ignored if set in
 * events.
 * POLLERR - An error occurred on the endpoint
 * POLLHUP - The connection to the peer endpoint was disconnected
 * POLLNVAL - The specified endpoint descriptor is invalid.
 *
 * Return:
 * Upon successful completion, scif_poll() returns a non-negative value. A
 * positive value indicates the total number of endpoint descriptors that have
 * been selected (that is, endpoint descriptors for which the revents member is
 * non-zero). A value of 0 indicates that the call timed out and no endpoint
 * descriptors have been selected. Otherwise in user mode -1 is returned and
 * errno is set to indicate the error; in kernel mode the negative of one of
 * the following errors is returned.
 *
 * Errors:
 * EINTR - A signal occurred before any requested event
 * EINVAL - The nepds argument is greater than {OPEN_MAX}
 * ENOMEM - There was no space to allocate file descriptor tables
 */
int scif_poll(struct scif_pollepd *epds, unsigned int nepds, long timeout);

/**
 * scif_client_register() - Register a SCIF client
 * @client:	client to be registered
 *
 * scif_client_register() registers a SCIF client. The probe() method
 * of the client is called when SCIF peer devices come online and the
 * remove() method is called when the peer devices disappear.
 *
 * Return:
 * Upon successful completion, scif_client_register() returns a non-negative
 * value. Otherwise the return value is the same as subsys_interface_register()
 * in the kernel.
 */
int scif_client_register(struct scif_client *client);

/**
 * scif_client_unregister() - Unregister a SCIF client
 * @client:	client to be unregistered
 *
 * scif_client_unregister() unregisters a SCIF client.
 *
 * Return:
 * None
 */
void scif_client_unregister(struct scif_client *client);

#endif /* __SCIF_H__ */

Filemanager

Name Type Size Permission Actions
amba Folder 0755
avf Folder 0755
bcma Folder 0755
byteorder Folder 0755
can Folder 0755
ceph Folder 0755
clk Folder 0755
crush Folder 0755
decompress Folder 0755
dma Folder 0755
dsa Folder 0755
extcon Folder 0755
firmware Folder 0755
fpga Folder 0755
fsl Folder 0755
gpio Folder 0755
hsi Folder 0755
i2c Folder 0755
iio Folder 0755
input Folder 0755
irqchip Folder 0755
isdn Folder 0755
lockd Folder 0755
mailbox Folder 0755
mfd Folder 0755
mlx4 Folder 0755
mlx5 Folder 0755
mmc Folder 0755
mtd Folder 0755
mux Folder 0755
netfilter Folder 0755
netfilter_arp Folder 0755
netfilter_bridge Folder 0755
netfilter_ipv4 Folder 0755
netfilter_ipv6 Folder 0755
perf Folder 0755
phy Folder 0755
pinctrl Folder 0755
platform_data Folder 0755
power Folder 0755
qed Folder 0755
raid Folder 0755
regulator Folder 0755
remoteproc Folder 0755
reset Folder 0755
rpmsg Folder 0755
rtc Folder 0755
sched Folder 0755
soc Folder 0755
spi Folder 0755
ssb Folder 0755
sunrpc Folder 0755
ulpi Folder 0755
unaligned Folder 0755
usb Folder 0755
uwb Folder 0755
wimax Folder 0755
8250_pci.h File 1.01 KB 0644
a.out.h File 354 B 0644
acct.h File 2.49 KB 0644
acpi.h File 36.89 KB 0644
acpi_dma.h File 3.22 KB 0644
acpi_iort.h File 2.15 KB 0644
acpi_pmtmr.h File 674 B 0644
adb.h File 1.79 KB 0644
adfs_fs.h File 574 B 0644
aer.h File 1.71 KB 0644
agp_backend.h File 3.45 KB 0644
agpgart.h File 3.82 KB 0644
ahci-remap.h File 607 B 0644
ahci_platform.h File 1.67 KB 0644
aio.h File 673 B 0644
alarmtimer.h File 1.83 KB 0644
altera_jtaguart.h File 379 B 0644
altera_uart.h File 397 B 0644
amd-iommu.h File 6.78 KB 0644
amifd.h File 1.99 KB 0644
amifdreg.h File 2.65 KB 0644
anon_inodes.h File 494 B 0644
apm-emulation.h File 1.54 KB 0644
apm_bios.h File 2.68 KB 0644
apple-gmux.h File 1.42 KB 0644
apple_bl.h File 498 B 0644
arch_topology.h File 840 B 0644
arm-cci.h File 2.01 KB 0644
arm-smccc.h File 12.79 KB 0644
arm_sdei.h File 2.33 KB 0644
asn1.h File 1.99 KB 0644
asn1_ber_bytecode.h File 2.72 KB 0644
asn1_decoder.h File 675 B 0644
assoc_array.h File 3.07 KB 0644
assoc_array_priv.h File 5.49 KB 0644
async.h File 1.65 KB 0644
async_tx.h File 6.81 KB 0644
ata.h File 33.61 KB 0644
ata_platform.h File 729 B 0644
atalk.h File 4.36 KB 0644
ath9k_platform.h File 1.44 KB 0644
atm.h File 287 B 0644
atm_suni.h File 253 B 0644
atm_tcp.h File 511 B 0644
atmdev.h File 10.21 KB 0644
atmel-mci.h File 1.4 KB 0644
atmel-ssc.h File 9.74 KB 0644
atmel_pdc.h File 1.47 KB 0644
atmel_tc.h File 11.33 KB 0644
atomic.h File 30.5 KB 0644
attribute_container.h File 2.47 KB 0644
audit.h File 17.22 KB 0644
auto_dev-ioctl.h File 454 B 0644
auto_fs.h File 436 B 0644
auxvec.h File 304 B 0644
average.h File 2.42 KB 0644
b1pcmcia.h File 666 B 0644
backing-dev-defs.h File 8.53 KB 0644
backing-dev.h File 13.8 KB 0644
backlight.h File 5.3 KB 0644
badblocks.h File 2.14 KB 0644
balloon_compaction.h File 7.2 KB 0644
bcd.h File 559 B 0644
bch.h File 2.6 KB 0644
bcm47xx_nvram.h File 1.22 KB 0644
bcm47xx_sprom.h File 600 B 0644
bcm47xx_wdt.h File 555 B 0644
bcm963xx_nvram.h File 2.96 KB 0644
bcm963xx_tag.h File 3.6 KB 0644
bfin_mac.h File 559 B 0644
binfmts.h File 4.77 KB 0644
bio.h File 20.17 KB 0644
bit_spinlock.h File 2.3 KB 0644
bitfield.h File 3.2 KB 0644
bitmap.h File 16.68 KB 0644
bitops.h File 6.69 KB 0644
bitrev.h File 2.53 KB 0644
bits.h File 883 B 0644
blk-cgroup.h File 22.2 KB 0644
blk-mq-pci.h File 247 B 0644
blk-mq-rdma.h File 232 B 0644
blk-mq-virtio.h File 288 B 0644
blk-mq.h File 9.09 KB 0644
blk_types.h File 10.52 KB 0644
blkdev.h File 58.96 KB 0644
blkpg.h File 436 B 0644
blktrace_api.h File 3.87 KB 0644
blockgroup_lock.h File 810 B 0644
bma150.h File 1.89 KB 0644
bootmem.h File 11.7 KB 0644
bottom_half.h File 803 B 0644
bpf-cgroup.h File 4.53 KB 0644
bpf.h File 18.51 KB 0644
bpf_trace.h File 196 B 0644
bpf_types.h File 1.88 KB 0644
bpf_verifier.h File 6.76 KB 0644
brcmphy.h File 9.88 KB 0644
bsearch.h File 275 B 0644
bsg-lib.h File 2.13 KB 0644
bsg.h File 773 B 0644
btree-128.h File 2.67 KB 0644
btree-type.h File 3.9 KB 0644
btree.h File 6.83 KB 0644
btrfs.h File 145 B 0644
buffer_head.h File 14.38 KB 0644
bug.h File 1.92 KB 0644
build_bug.h File 3.15 KB 0644
bvec.h File 4.39 KB 0644
c2port.h File 1.49 KB 0644
cache.h File 2.13 KB 0644
cacheinfo.h File 3.27 KB 0644
capability.h File 7.6 KB 0644
cb710.h File 5.69 KB 0644
cciss_ioctl.h File 1.03 KB 0644
ccp.h File 18.26 KB 0644
cdev.h File 845 B 0644
cdrom.h File 8.75 KB 0644
cfag12864b.h File 2.1 KB 0644
cgroup-defs.h File 25.38 KB 0644
cgroup.h File 26.12 KB 0644
cgroup_rdma.h File 1.33 KB 0644
cgroup_subsys.h File 1.17 KB 0644
circ_buf.h File 1.08 KB 0644
cleancache.h File 3.89 KB 0644
clk-provider.h File 34.29 KB 0644
clk.h File 19.38 KB 0644
clkdev.h File 1.54 KB 0644
clock_cooling.h File 2.06 KB 0644
clockchips.h File 7.27 KB 0644
clocksource.h File 8.31 KB 0644
cm4000_cs.h File 199 B 0644
cma.h File 1.19 KB 0644
cmdline-parser.h File 1.21 KB 0644
cn_proc.h File 1.85 KB 0644
cnt32_to_63.h File 3.6 KB 0644
coda.h File 2.16 KB 0644
coda_psdev.h File 2.98 KB 0644
compaction.h File 7.1 KB 0644
compat.h File 27.39 KB 0644
compiler-clang.h File 1.31 KB 0644
compiler-gcc.h File 12.6 KB 0644
compiler-intel.h File 1.3 KB 0644
compiler.h File 10.06 KB 0644
compiler_types.h File 7.5 KB 0644
completion.h File 4.05 KB 0644
component.h File 1.37 KB 0644
concap.h File 3.69 KB 0644
configfs.h File 9.22 KB 0644
connector.h File 2.43 KB 0644
console.h File 6.72 KB 0644
console_struct.h File 6.87 KB 0644
consolemap.h File 1.04 KB 0644
const.h File 157 B 0644
container.h File 668 B 0644
context_tracking.h File 4.43 KB 0644
context_tracking_state.h File 1.39 KB 0644
cordic.h File 1.75 KB 0644
coredump.h File 783 B 0644
coresight-pmu.h File 1.44 KB 0644
coresight-stm.h File 152 B 0644
coresight.h File 9.86 KB 0644
count_zeros.h File 1.62 KB 0644
cper.h File 16.11 KB 0644
cpu.h File 6.86 KB 0644
cpu_cooling.h File 3.59 KB 0644
cpu_pm.h File 2.78 KB 0644
cpu_rmap.h File 1.86 KB 0644
cpufeature.h File 1.85 KB 0644
cpufreq.h File 27.62 KB 0644
cpuhotplug.h File 12.05 KB 0644
cpuidle.h File 8.68 KB 0644
cpumask.h File 25.38 KB 0644
cpuset.h File 7.07 KB 0644
crash_core.h File 2.99 KB 0644
crash_dump.h File 2.98 KB 0644
crc-ccitt.h File 369 B 0644
crc-itu-t.h File 613 B 0644
crc-t10dif.h File 415 B 0644
crc16.h File 622 B 0644
crc32.h File 2.83 KB 0644
crc32c.h File 293 B 0644
crc4.h File 192 B 0644
crc7.h File 316 B 0644
crc8.h File 3.65 KB 0644
cred.h File 12.29 KB 0644
crypto.h File 55.52 KB 0644
cryptohash.h File 319 B 0644
cs5535.h File 6.28 KB 0644
ctype.h File 1.75 KB 0644
cuda.h File 501 B 0644
cyclades.h File 10.36 KB 0644
davinci_emac.h File 1.12 KB 0644
dax.h File 3.65 KB 0644
dca.h File 2.63 KB 0644
dcache.h File 18.78 KB 0644
dccp.h File 10.73 KB 0644
dcookies.h File 1.3 KB 0644
debug_locks.h File 1.51 KB 0644
debugfs.h File 11.09 KB 0644
debugobjects.h File 3.89 KB 0644
delay.h File 1.83 KB 0644
delayacct.h File 5.17 KB 0644
delayed_call.h File 709 B 0644
dell-led.h File 128 B 0644
devcoredump.h File 2.78 KB 0644
devfreq-event.h File 5.64 KB 0644
devfreq.h File 12.53 KB 0644
devfreq_cooling.h File 3.54 KB 0644
device-mapper.h File 17.85 KB 0644
device.h File 55.51 KB 0644
device_cgroup.h File 1.86 KB 0644
devpts_fs.h File 1.28 KB 0644
digsig.h File 1.35 KB 0644
dim.h File 8.98 KB 0644
dio.h File 10.97 KB 0644
dirent.h File 216 B 0644
dlm.h File 6.01 KB 0644
dlm_plock.h File 678 B 0644
dm-dirty-log.h File 3.94 KB 0644
dm-io.h File 1.93 KB 0644
dm-kcopyd.h File 2.88 KB 0644
dm-region-hash.h File 3.11 KB 0644
dm9000.h File 1.11 KB 0644
dma-buf.h File 14.7 KB 0644
dma-contiguous.h File 4.48 KB 0644
dma-debug.h File 5.61 KB 0644
dma-direction.h File 338 B 0644
dma-fence-array.h File 2.49 KB 0644
dma-fence.h File 17.29 KB 0644
dma-iommu.h File 3.62 KB 0644
dma-mapping.h File 24.61 KB 0644
dma_remapping.h File 1.46 KB 0644
dmaengine.h File 46.04 KB 0644
dmapool.h File 1.09 KB 0644
dmar.h File 7.94 KB 0644
dmi.h File 4.08 KB 0644
dnotify.h File 1.02 KB 0644
dns_resolver.h File 1.31 KB 0644
dqblk_qtree.h File 2.19 KB 0644
dqblk_v1.h File 327 B 0644
dqblk_v2.h File 406 B 0644
drbd.h File 10.67 KB 0644
drbd_genl.h File 21.49 KB 0644
drbd_genl_api.h File 1.77 KB 0644
drbd_limits.h File 7.82 KB 0644
ds2782_battery.h File 158 B 0644
dtlk.h File 3.5 KB 0644
dw_apb_timer.h File 1.7 KB 0644
dynamic_debug.h File 5.08 KB 0644
dynamic_queue_limits.h File 3.7 KB 0644
earlycpio.h File 359 B 0644
ecryptfs.h File 3.82 KB 0644
edac.h File 20.26 KB 0644
edd.h File 1.43 KB 0644
edma.h File 807 B 0644
eeprom_93cx6.h File 2.94 KB 0644
eeprom_93xx46.h File 879 B 0644
efi-bgrt.h File 644 B 0644
efi.h File 49.13 KB 0644
efs_vh.h File 1.55 KB 0644
eisa.h File 2.96 KB 0644
elevator.h File 9.26 KB 0644
elf-fdpic.h File 2.18 KB 0644
elf-randomize.h File 583 B 0644
elf.h File 1.53 KB 0644
elfcore-compat.h File 1.24 KB 0644
elfcore.h File 2.52 KB 0644
elfnote.h File 3.54 KB 0644
enclosure.h File 4.6 KB 0644
err.h File 1.55 KB 0644
errno.h File 1.34 KB 0644
errqueue.h File 524 B 0644
errseq.h File 373 B 0644
etherdevice.h File 15.65 KB 0644
ethtool.h File 17.3 KB 0644
eventfd.h File 2.36 KB 0644
eventpoll.h File 2.16 KB 0644
evm.h File 2.65 KB 0644
export.h File 3.88 KB 0644
exportfs.h File 7.45 KB 0644
ext2_fs.h File 967 B 0644
extable.h File 999 B 0644
extcon-provider.h File 4.33 KB 0644
extcon.h File 10.4 KB 0644
f2fs_fs.h File 17.51 KB 0644
f75375s.h File 541 B 0644
falloc.h File 792 B 0644
fanotify.h File 245 B 0644
fault-inject.h File 1.87 KB 0644
fb.h File 28.74 KB 0644
fbcon.h File 492 B 0644
fcdevice.h File 988 B 0644
fcntl.h File 1.27 KB 0644
fd.h File 490 B 0644
fddidevice.h File 1.02 KB 0644
fdtable.h File 3.28 KB 0644
fec.h File 609 B 0644
file.h File 2.18 KB 0644
filter.h File 27.5 KB 0644
fips.h File 167 B 0644
firewire.h File 13.4 KB 0644
firmware-map.h File 1.32 KB 0644
firmware.h File 2.34 KB 0644
fixp-arith.h File 4.41 KB 0644
flat.h File 1.61 KB 0644
flex_array.h File 4.31 KB 0644
flex_proportions.h File 2.81 KB 0644
fmc-sdb.h File 1.29 KB 0644
fmc.h File 9.65 KB 0644
font.h File 1.6 KB 0644
frame.h File 813 B 0644
freezer.h File 8.67 KB 0644
frontswap.h File 2.87 KB 0644
fs.h File 110.97 KB 0644
fs_enet_pd.h File 3.38 KB 0644
fs_pin.h File 619 B 0644
fs_stack.h File 811 B 0644
fs_struct.h File 1.03 KB 0644
fs_uart_pd.h File 1.49 KB 0644
fscache-cache.h File 18.4 KB 0644
fscache.h File 27.54 KB 0644
fscrypt.h File 8.93 KB 0644
fscrypt_notsupp.h File 4.45 KB 0644
fscrypt_supp.h File 6.1 KB 0644
fsi.h File 2.37 KB 0644
fsl-diu-fb.h File 4.08 KB 0644
fsl_devices.h File 4.32 KB 0644
fsl_hypervisor.h File 2.76 KB 0644
fsl_ifc.h File 25.13 KB 0644
fsldma.h File 398 B 0644
fsnotify.h File 7.43 KB 0644
fsnotify_backend.h File 16.66 KB 0644
ftrace.h File 29.91 KB 0644
ftrace_irq.h File 823 B 0644
futex.h File 2.4 KB 0644
fwnode.h File 4.41 KB 0644
gameport.h File 5.56 KB 0644
gcd.h File 193 B 0644
genalloc.h File 5.92 KB 0644
genetlink.h File 1.39 KB 0644
genhd.h File 22.77 KB 0644
genl_magic_func.h File 12.05 KB 0644
genl_magic_struct.h File 7.66 KB 0644
getcpu.h File 641 B 0644
gfp.h File 23.37 KB 0644
glob.h File 256 B 0644
goldfish.h File 605 B 0644
gpio-pxa.h File 571 B 0644
gpio.h File 5.19 KB 0644
gpio_keys.h File 1.63 KB 0644
hardirq.h File 1.95 KB 0644
hash.h File 3 KB 0644
hashtable.h File 6.63 KB 0644
hdlc.h File 3.33 KB 0644
hdlcdrv.h File 6.32 KB 0644
hdmi.h File 9.36 KB 0644
hid-debug.h File 2.07 KB 0644
hid-roccat.h File 688 B 0644
hid-sensor-hub.h File 9.25 KB 0644
hid-sensor-ids.h File 7.27 KB 0644
hid.h File 35.93 KB 0644
hiddev.h File 2.07 KB 0644
hidraw.h File 1.49 KB 0644
highmem.h File 5.84 KB 0644
highuid.h File 3.12 KB 0644
hil.h File 18.42 KB 0644
hil_mlc.h File 5.13 KB 0644
hippidevice.h File 1.23 KB 0644
hmm.h File 18.19 KB 0644
host1x.h File 9.02 KB 0644
hp_sdc.h File 14.02 KB 0644
hpet.h File 2.55 KB 0644
hrtimer.h File 14.02 KB 0644
htcpld.h File 617 B 0644
huge_mm.h File 10.1 KB 0644
hugetlb.h File 17 KB 0644
hugetlb_cgroup.h File 2.93 KB 0644
hugetlb_inline.h File 374 B 0644
hw_breakpoint.h File 3.85 KB 0644
hw_random.h File 2.03 KB 0644
hwmon-sysfs.h File 1.98 KB 0644
hwmon-vid.h File 1.48 KB 0644
hwmon.h File 12.07 KB 0644
hwspinlock.h File 11.06 KB 0644
hyperv.h File 38.89 KB 0644
hypervisor.h File 400 B 0644
i2c-algo-bit.h File 2.24 KB 0644
i2c-algo-pca.h File 2.89 KB 0644
i2c-algo-pcf.h File 1.88 KB 0644
i2c-dev.h File 1.03 KB 0644
i2c-gpio.h File 1.19 KB 0644
i2c-mux-gpio.h File 1.35 KB 0644
i2c-mux.h File 2.29 KB 0644
i2c-ocores.h File 757 B 0644
i2c-omap.h File 1.21 KB 0644
i2c-pca-platform.h File 441 B 0644
i2c-pnx.h File 923 B 0644
i2c-pxa.h File 438 B 0644
i2c-smbus.h File 1.94 KB 0644
i2c-xiic.h File 1.41 KB 0644
i2c.h File 30.91 KB 0644
i7300_idle.h File 1.95 KB 0644
i8042.h File 2.14 KB 0644
i8253.h File 809 B 0644
icmp.h File 863 B 0644
icmpv6.h File 2.5 KB 0644
ide.h File 46.27 KB 0644
idr.h File 7.82 KB 0644
ieee80211.h File 83.19 KB 0644
ieee802154.h File 11.5 KB 0644
if_arp.h File 1.86 KB 0644
if_bridge.h File 2.65 KB 0644
if_eql.h File 1.07 KB 0644
if_ether.h File 1.47 KB 0644
if_fddi.h File 3.44 KB 0644
if_frad.h File 2.87 KB 0644
if_link.h File 554 B 0644
if_ltalk.h File 188 B 0644
if_macvlan.h File 2.2 KB 0644
if_phonet.h File 319 B 0644
if_pppol2tp.h File 727 B 0644
if_pppox.h File 3.05 KB 0644
if_tap.h File 2.24 KB 0644
if_team.h File 7.65 KB 0644
if_tun.h File 1.14 KB 0644
if_tunnel.h File 409 B 0644
if_vlan.h File 19.2 KB 0644
igmp.h File 4.15 KB 0644
ihex.h File 1.95 KB 0644
ima.h File 2.53 KB 0644
imx-media.h File 811 B 0644
in.h File 2.43 KB 0644
in6.h File 1.85 KB 0644
inet.h File 2.8 KB 0644
inet_diag.h File 2.42 KB 0644
inetdevice.h File 8.25 KB 0644
init.h File 9.1 KB 0644
init_ohci1394_dma.h File 196 B 0644
init_task.h File 7.84 KB 0644
initrd.h File 685 B 0644
inotify.h File 696 B 0644
input-polldev.h File 2.17 KB 0644
input.h File 18.7 KB 0644
integrity.h File 1.05 KB 0644
intel-iommu.h File 16.85 KB 0644
intel-pti.h File 1.56 KB 0644
intel-svm.h File 4.96 KB 0644
interrupt.h File 21.15 KB 0644
interval_tree.h File 831 B 0644
interval_tree_generic.h File 8 KB 0644
io-64-nonatomic-hi-lo.h File 1.14 KB 0644
io-64-nonatomic-lo-hi.h File 1.14 KB 0644
io-mapping.h File 4.36 KB 0644
io.h File 5.86 KB 0644
ioc3.h File 3.14 KB 0644
ioc4.h File 5.78 KB 0644
iocontext.h File 4.76 KB 0644
iomap.h File 3.95 KB 0644
iommu-common.h File 1.41 KB 0644
iommu-helper.h File 950 B 0644
iommu.h File 21.74 KB 0644
iopoll.h File 5.72 KB 0644
ioport.h File 10.74 KB 0644
ioprio.h File 1.96 KB 0644
iova.h File 7.03 KB 0644
ip.h File 1.07 KB 0644
ipack.h File 8.85 KB 0644
ipc.h File 695 B 0644
ipc_namespace.h File 4.81 KB 0644
ipmi-fru.h File 3.64 KB 0644
ipmi.h File 11.44 KB 0644
ipmi_smi.h File 8.9 KB 0644
ipv6.h File 8.92 KB 0644
ipv6_route.h File 594 B 0644
irq.h File 39.04 KB 0644
irq_cpustat.h File 949 B 0644
irq_poll.h File 575 B 0644
irq_sim.h File 1.16 KB 0644
irq_work.h File 1.3 KB 0644
irqbypass.h File 3.59 KB 0644
irqchip.h File 1.54 KB 0644
irqdesc.h File 8.15 KB 0644
irqdomain.h File 19.21 KB 0644
irqflags.h File 4.82 KB 0644
irqhandler.h File 362 B 0644
irqnr.h File 856 B 0644
irqreturn.h File 503 B 0644
isa.h File 2.12 KB 0644
isapnp.h File 3.8 KB 0644
iscsi_boot_sysfs.h File 4.09 KB 0644
iscsi_ibft.h File 1.28 KB 0644
isdn.h File 22.99 KB 0644
isdn_divertif.h File 1.27 KB 0644
isdn_ppp.h File 6.64 KB 0644
isdnif.h File 19.26 KB 0644
isicom.h File 1.49 KB 0644
jbd2.h File 47.14 KB 0644
jhash.h File 4.62 KB 0644
jiffies.h File 15.4 KB 0644
journal-head.h File 2.87 KB 0644
joystick.h File 1.28 KB 0644
jump_label.h File 13.32 KB 0644
jump_label_ratelimit.h File 1.12 KB 0644
jz4740-adc.h File 1023 B 0644
jz4780-nemc.h File 1.16 KB 0644
kallsyms.h File 3.59 KB 0644
kasan-checks.h File 441 B 0644
kasan.h File 4.48 KB 0644
kbd_diacr.h File 198 B 0644
kbd_kern.h File 3.84 KB 0644
kbuild.h File 380 B 0644
kconfig.h File 2.53 KB 0644
kcore.h File 664 B 0644
kcov.h File 802 B 0644
kdb.h File 7.3 KB 0644
kdebug.h File 487 B 0644
kdev_t.h File 1.8 KB 0644
kern_levels.h File 1.58 KB 0644
kernel-page-flags.h File 505 B 0644
kernel.h File 31.31 KB 0644
kernel_stat.h File 2.5 KB 0644
kernelcapi.h File 4.45 KB 0644
kernfs.h File 16.88 KB 0644
kexec.h File 10.06 KB 0644
key-type.h File 6.16 KB 0644
key.h File 12.75 KB 0644
keyboard.h File 665 B 0644
kfifo.h File 24.84 KB 0644
kgdb.h File 10.72 KB 0644
khugepaged.h File 2.36 KB 0644
klist.h File 1.88 KB 0644
kmemleak.h File 3.86 KB 0644
kmod.h File 1.71 KB 0644
kmsg_dump.h File 2.85 KB 0644
kobj_map.h File 545 B 0644
kobject.h File 7.62 KB 0644
kobject_ns.h File 1.9 KB 0644
kprobes.h File 14.71 KB 0644
kref.h File 3.28 KB 0644
ks0108.h File 1.57 KB 0644
ks8842.h File 1.19 KB 0644
ks8851_mll.h File 1.04 KB 0644
ksm.h File 2.89 KB 0644
kthread.h File 6.7 KB 0644
ktime.h File 6.71 KB 0644
kvm_host.h File 37.83 KB 0644
kvm_irqfd.h File 2.39 KB 0644
kvm_para.h File 284 B 0644
kvm_types.h File 1.67 KB 0644
l2tp.h File 261 B 0644
lapb.h File 1.71 KB 0644
latencytop.h File 1.18 KB 0644
lcd.h File 4.19 KB 0644
lcm.h File 275 B 0644
led-class-flash.h File 5.42 KB 0644
led-lm3530.h File 3.7 KB 0644
leds-bd2802.h File 642 B 0644
leds-lp3944.h File 1.07 KB 0644
leds-lp3952.h File 2.5 KB 0644
leds-pca9532.h File 1.01 KB 0644
leds-regulator.h File 1.29 KB 0644
leds-tca6507.h File 1.02 KB 0644
leds.h File 13.67 KB 0644
leds_pwm.h File 407 B 0644
libata.h File 64.88 KB 0644
libfdt.h File 244 B 0644
libfdt_env.h File 494 B 0644
libgcc.h File 1.07 KB 0644
libnvdimm.h File 7.16 KB 0644
libps2.h File 1.75 KB 0644
license.h File 374 B 0644
lightnvm.h File 10.95 KB 0644
linkage.h File 2.64 KB 0644
linux_logo.h File 2.06 KB 0644
lis3lv02d.h File 5 KB 0644
list.h File 23.71 KB 0644
list_bl.h File 4.19 KB 0644
list_lru.h File 6.29 KB 0644
list_nulls.h File 3.47 KB 0644
list_sort.h File 277 B 0644
livepatch.h File 6.94 KB 0644
llc.h File 749 B 0644
llist.h File 9.15 KB 0644
lockdep.h File 18.61 KB 0644
lockref.h File 1.45 KB 0644
log2.h File 5.48 KB 0644
logic_pio.h File 3.24 KB 0644
lp.h File 2.76 KB 0644
lru_cache.h File 12.42 KB 0644
lsm_audit.h File 2.73 KB 0644
lsm_hooks.h File 88.04 KB 0644
lz4.h File 26.44 KB 0644
lzo.h File 1.37 KB 0644
mISDNdsp.h File 1.19 KB 0644
mISDNhw.h File 5.78 KB 0644
mISDNif.h File 14.91 KB 0644
mailbox_client.h File 1.79 KB 0644
mailbox_controller.h File 5.4 KB 0644
maple.h File 2.71 KB 0644
marvell_phy.h File 1.17 KB 0644
math64.h File 6.42 KB 0644
max17040_battery.h File 474 B 0644
mbcache.h File 1.57 KB 0644
mbus.h File 3.09 KB 0644
mc146818rtc.h File 4.46 KB 0644
mc6821.h File 1.18 KB 0644
mcb.h File 3.88 KB 0644
mdev.h File 4.9 KB 0644
mdio-bitbang.h File 1.18 KB 0644
mdio-mux.h File 1021 B 0644
mdio.h File 9.01 KB 0644
mei_cl_bus.h File 3.28 KB 0644
mem_encrypt.h File 1.21 KB 0644
memblock.h File 14.6 KB 0644
memcontrol.h File 29.63 KB 0644
memory.h File 4.52 KB 0644
memory_hotplug.h File 10.29 KB 0644
mempolicy.h File 7.44 KB 0644
mempool.h File 2.39 KB 0644
memremap.h File 7.15 KB 0644
memstick.h File 9.73 KB 0644
mic_bus.h File 3.2 KB 0644
micrel_phy.h File 1.42 KB 0644
microchipphy.h File 2.84 KB 0644
migrate.h File 10.02 KB 0644
migrate_mode.h File 758 B 0644
mii.h File 8.74 KB 0644
miscdevice.h File 2.81 KB 0644
mm-arch-hooks.h File 679 B 0644
mm.h File 85.89 KB 0644
mm_inline.h File 3.44 KB 0644
mm_types.h File 19.25 KB 0644
mm_types_task.h File 2.4 KB 0644
mman.h File 3.26 KB 0644
mmdebug.h File 2.32 KB 0644
mmiotrace.h File 3.05 KB 0644
mmu_context.h File 378 B 0644
mmu_notifier.h File 15.84 KB 0644
mmzone.h File 39.66 KB 0644
mnt_namespace.h File 617 B 0644
mod_devicetable.h File 19.33 KB 0644
module.h File 22.23 KB 0644
moduleloader.h File 2.72 KB 0644
moduleparam.h File 19.42 KB 0644
mount.h File 3.45 KB 0644
mpage.h File 761 B 0644
mpi.h File 5.17 KB 0644
mpls.h File 394 B 0644
mpls_iptunnel.h File 178 B 0644
mroute.h File 4.71 KB 0644
mroute6.h File 3.27 KB 0644
msdos_fs.h File 273 B 0644
msg.h File 1.02 KB 0644
msi.h File 11.79 KB 0644
mutex.h File 6.91 KB 0644
mv643xx.h File 52.4 KB 0644
mv643xx_eth.h File 1.95 KB 0644
mv643xx_i2c.h File 545 B 0644
mvebu-pmsu.h File 520 B 0644
mxm-wmi.h File 1.05 KB 0644
n_r3964.h File 4.06 KB 0644
namei.h File 3.41 KB 0644
nd.h File 5.71 KB 0644
net.h File 11.33 KB 0644
netdev_features.h File 9.39 KB 0644
netdevice.h File 140.44 KB 0644
netfilter.h File 11.74 KB 0644
netfilter_bridge.h File 1.82 KB 0644
netfilter_defs.h File 239 B 0644
netfilter_ingress.h File 1.44 KB 0644
netfilter_ipv4.h File 424 B 0644
netfilter_ipv6.h File 1.43 KB 0644
netlink.h File 6.87 KB 0644
netpoll.h File 2.69 KB 0644
nfs.h File 1.31 KB 0644
nfs3.h File 260 B 0644
nfs4.h File 17.5 KB 0644
nfs_fs.h File 16.12 KB 0644
nfs_fs_i.h File 308 B 0644
nfs_fs_sb.h File 8.81 KB 0644
nfs_iostat.h File 4.18 KB 0644
nfs_page.h File 6.26 KB 0644
nfs_xdr.h File 38.79 KB 0644
nfsacl.h File 1.15 KB 0644
nl802154.h File 4.23 KB 0644
nls.h File 3.08 KB 0644
nmi.h File 6.56 KB 0644
node.h File 3 KB 0644
nodemask.h File 17.08 KB 0644
nospec.h File 2.21 KB 0644
notifier.h File 7.72 KB 0644
ns_common.h File 235 B 0644
nsc_gpio.h File 1.42 KB 0644
nsproxy.h File 2.48 KB 0644
ntb.h File 46.52 KB 0644
ntb_transport.h File 3.8 KB 0644
nubus.h File 4.13 KB 0644
numa.h File 292 B 0644
nvme-fc-driver.h File 38.22 KB 0644
nvme-fc.h File 8.34 KB 0644
nvme-rdma.h File 2.44 KB 0644
nvme.h File 26.61 KB 0644
nvmem-consumer.h File 4.35 KB 0644
nvmem-provider.h File 1.52 KB 0644
nvram.h File 495 B 0644
of.h File 40.4 KB 0644
of_address.h File 4.47 KB 0644
of_device.h File 3.04 KB 0644
of_dma.h File 2.45 KB 0644
of_fdt.h File 4.19 KB 0644
of_gpio.h File 4.39 KB 0644
of_graph.h File 3.56 KB 0644
of_iommu.h File 1 KB 0644
of_irq.h File 3.6 KB 0644
of_mdio.h File 2.98 KB 0644
of_net.h File 708 B 0644
of_pci.h File 2.23 KB 0644
of_pdt.h File 1.4 KB 0644
of_platform.h File 4.1 KB 0644
of_reserved_mem.h File 2.35 KB 0644
oid_registry.h File 3.87 KB 0644
olpc-ec.h File 1.08 KB 0644
omap-dma.h File 10.5 KB 0644
omap-dmaengine.h File 583 B 0644
omap-gpmc.h File 2.22 KB 0644
omap-iommu.h File 520 B 0644
omap-mailbox.h File 777 B 0644
omapfb.h File 1.22 KB 0644
once.h File 2.8 KB 0644
oom.h File 3.15 KB 0644
openvswitch.h File 844 B 0644
oprofile.h File 6.1 KB 0644
osq_lock.h File 1.04 KB 0644
overflow.h File 9.26 KB 0644
oxu210hp.h File 197 B 0644
padata.h File 5.82 KB 0644
page-flags-layout.h File 2.99 KB 0644
page-flags.h File 23.91 KB 0644
page-isolation.h File 1.9 KB 0644
page_counter.h File 1.46 KB 0644
page_ext.h File 1.89 KB 0644
page_idle.h File 2.62 KB 0644
page_owner.h File 2.3 KB 0644
page_ref.h File 4.99 KB 0644
pageblock-flags.h File 3.28 KB 0644
pagemap.h File 19.02 KB 0644
pagevec.h File 2.3 KB 0644
parman.h File 2.87 KB 0644
parport.h File 17.84 KB 0644
parport_pc.h File 6.56 KB 0644
parser.h File 1.04 KB 0644
pata_arasan_cf_data.h File 1.22 KB 0644
patchkey.h File 757 B 0644
path.h File 572 B 0644
pch_dma.h File 999 B 0644
pci-acpi.h File 3.44 KB 0644
pci-aspm.h File 882 B 0644
pci-ats.h File 1.39 KB 0644
pci-dma-compat.h File 4.41 KB 0644
pci-dma.h File 454 B 0644
pci-ecam.h File 2.54 KB 0644
pci-ep-cfs.h File 1.09 KB 0644
pci-epc.h File 5.38 KB 0644
pci-epf.h File 4.83 KB 0644
pci.h File 81.59 KB 0644
pci_hotplug.h File 6.91 KB 0644
pci_ids.h File 120.12 KB 0644
pcieport_if.h File 2.35 KB 0644
pda_power.h File 1.12 KB 0644
pe.h File 15.6 KB 0644
percpu-defs.h File 18.13 KB 0644
percpu-refcount.h File 9.93 KB 0644
percpu-rwsem.h File 4.09 KB 0644
percpu.h File 5.02 KB 0644
percpu_counter.h File 4.26 KB 0644
percpu_ida.h File 2.32 KB 0644
perf_event.h File 38.78 KB 0644
perf_regs.h File 1.02 KB 0644
personality.h File 393 B 0644
pfn.h File 666 B 0644
pfn_t.h File 3.23 KB 0644
phonet.h File 1.12 KB 0644
phy.h File 31.11 KB 0644
phy_fixed.h File 1.64 KB 0644
phy_led_triggers.h File 1.46 KB 0644
phylink.h File 5.06 KB 0644
pid.h File 5.77 KB 0644
pid_namespace.h File 2.33 KB 0644
pim.h File 2.67 KB 0644
pipe_fs_i.h File 6.46 KB 0644
pkeys.h File 916 B 0644
pktcdvd.h File 5.87 KB 0644
pl320-ipc.h File 758 B 0644
platform_device.h File 12.43 KB 0644
plist.h File 8.69 KB 0644
pm-trace.h File 940 B 0644
pm.h File 34.21 KB 0644
pm2301_charger.h File 1.68 KB 0644
pm_clock.h File 2.45 KB 0644
pm_domain.h File 9.03 KB 0644
pm_opp.h File 10.08 KB 0644
pm_qos.h File 8.51 KB 0644
pm_runtime.h File 8.52 KB 0644
pm_wakeirq.h File 1.31 KB 0644
pm_wakeup.h File 6.61 KB 0644
pmbus.h File 1.58 KB 0644
pmu.h File 2.34 KB 0644
pnfs_osd_xdr.h File 9.27 KB 0644
pnp.h File 14.89 KB 0644
poison.h File 2.66 KB 0644
poll.h File 3.24 KB 0644
posix-clock.h File 4.55 KB 0644
posix-timers.h File 3.55 KB 0644
posix_acl.h File 3.06 KB 0644
posix_acl_xattr.h File 1.58 KB 0644
power_supply.h File 13.41 KB 0644
powercap.h File 12.59 KB 0644
ppp-comp.h File 3.1 KB 0644
ppp_channel.h File 3.07 KB 0644
ppp_defs.h File 454 B 0644
pps-gpio.h File 1.01 KB 0644
pps_kernel.h File 3.55 KB 0644
pr.h File 566 B 0644
prandom.h File 2.81 KB 0644
preempt.h File 9.33 KB 0644
prefetch.h File 1.54 KB 0644
prime_numbers.h File 1.35 KB 0644
printk.h File 15.24 KB 0644
proc_fs.h File 3.26 KB 0644
proc_ns.h File 2.44 KB 0644
processor.h File 2.14 KB 0644
profile.h File 2.68 KB 0644
projid.h File 2.34 KB 0644
property.h File 9.79 KB 0644
psci.h File 1.87 KB 0644
pstore.h File 7.58 KB 0644
pstore_ram.h File 2.89 KB 0644
pti.h File 240 B 0644
ptp_classify.h File 2.89 KB 0644
ptp_clock_kernel.h File 8.56 KB 0644
ptr_ring.h File 16.29 KB 0644
ptrace.h File 14.57 KB 0644
purgatory.h File 589 B 0644
pvclock_gtod.h File 548 B 0644
pwm.h File 16.8 KB 0644
pwm_backlight.h File 740 B 0644
pxa168_eth.h File 728 B 0644
pxa2xx_ssp.h File 9.8 KB 0644
qcom_scm.h File 4.12 KB 0644
qnx6_fs.h File 3.27 KB 0644
quicklist.h File 2.13 KB 0644
quota.h File 18.87 KB 0644
quotaops.h File 10.17 KB 0644
radix-tree.h File 21.77 KB 0644
raid_class.h File 2.08 KB 0644
ramfs.h File 762 B 0644
random.h File 3.98 KB 0644
range.h File 651 B 0644
ras.h File 1.18 KB 0644
ratelimit.h File 2.81 KB 0644
rational.h File 639 B 0644
rbtree.h File 5.36 KB 0644
rbtree_augmented.h File 8.67 KB 0644
rbtree_latch.h File 6.62 KB 0644
rcu_node_tree.h File 4.34 KB 0644
rcu_segcblist.h File 3.26 KB 0644
rcu_sync.h File 2.57 KB 0644
rculist.h File 23.53 KB 0644
rculist_bl.h File 4.36 KB 0644
rculist_nulls.h File 6.17 KB 0644
rcupdate.h File 33.26 KB 0644
rcupdate_wait.h File 1.63 KB 0644
rcutiny.h File 3.64 KB 0644
rcutree.h File 3.56 KB 0644
rcuwait.h File 1.82 KB 0644
reboot-mode.h File 600 B 0644
reboot.h File 2.05 KB 0644
reciprocal_div.h File 1.01 KB 0644
refcount.h File 2.6 KB 0644
regmap.h File 42.34 KB 0644
regset.h File 15.08 KB 0644
relay.h File 8.84 KB 0644
remoteproc.h File 18.48 KB 0644
reservation.h File 8.12 KB 0644
reset-controller.h File 2.16 KB 0644
reset.h File 13.69 KB 0644
resource.h File 339 B 0644
resource_ext.h File 2.22 KB 0644
restart_block.h File 1.11 KB 0644
rfkill.h File 9.89 KB 0644
rhashtable.h File 38.24 KB 0644
ring_buffer.h File 6.79 KB 0644
rio.h File 19.23 KB 0644
rio_drv.h File 14.71 KB 0644
rio_ids.h File 1.29 KB 0644
rio_regs.h File 19.27 KB 0644
rmap.h File 9.08 KB 0644
rmi.h File 12.13 KB 0644
rndis.h File 16.86 KB 0644
rodata_test.h File 559 B 0644
root_dev.h File 579 B 0644
rpmsg.h File 8.37 KB 0644
rslib.h File 2.99 KB 0644
rtc.h File 8.71 KB 0644
rtmutex.h File 3.47 KB 0644
rtnetlink.h File 4.27 KB 0644
rtsx_common.h File 1.44 KB 0644
rtsx_pci.h File 40.14 KB 0644
rtsx_usb.h File 15.95 KB 0644
rwlock.h File 4.35 KB 0644
rwlock_api_smp.h File 7.67 KB 0644
rwlock_types.h File 1.12 KB 0644
rwsem-spinlock.h File 1.58 KB 0644
rwsem.h File 6 KB 0644
s3c_adc_battery.h File 971 B 0644
sa11x0-dma.h File 572 B 0644
sbitmap.h File 13.56 KB 0644
scatterlist.h File 13.29 KB 0644
scc.h File 2.84 KB 0644
sched.h File 47.45 KB 0644
sched_clock.h File 661 B 0644
scif.h File 58.85 KB 0644
scpi_protocol.h File 2.58 KB 0644
screen_info.h File 191 B 0644
sctp.h File 21.92 KB 0644
scx200.h File 1.82 KB 0644
scx200_gpio.h File 2.38 KB 0644
sdb.h File 4.17 KB 0644
sdla.h File 6.9 KB 0644
seccomp.h File 2.66 KB 0644
securebits.h File 239 B 0644
security.h File 47.81 KB 0644
sed-opal.h File 1.94 KB 0644
seg6.h File 121 B 0644
seg6_genl.h File 136 B 0644
seg6_hmac.h File 136 B 0644
seg6_iptunnel.h File 148 B 0644
seg6_local.h File 100 B 0644
selection.h File 1.41 KB 0644
selinux.h File 910 B 0644
sem.h File 2.02 KB 0644
semaphore.h File 1.36 KB 0644
seq_buf.h File 3.15 KB 0644
seq_file.h File 6.68 KB 0644
seq_file_net.h File 713 B 0644
seqlock.h File 16.48 KB 0644
seqno-fence.h File 3.96 KB 0644
serdev.h File 9.48 KB 0644
serial.h File 630 B 0644
serial_8250.h File 6.01 KB 0644
serial_bcm63xx.h File 4.73 KB 0644
serial_core.h File 17.72 KB 0644
serial_max3100.h File 1.39 KB 0644
serial_pnx8xxx.h File 2.61 KB 0644
serial_s3c.h File 9.24 KB 0644
serial_sci.h File 1.57 KB 0644
serio.h File 4.42 KB 0644
set_memory.h File 740 B 0644
sfi.h File 5.75 KB 0644
sfi_acpi.h File 3.39 KB 0644
sfp.h File 10.4 KB 0644
sh_clk.h File 5.96 KB 0644
sh_dma.h File 3.61 KB 0644
sh_eth.h File 417 B 0644
sh_intc.h File 3.42 KB 0644
sh_timer.h File 172 B 0644
shdma-base.h File 4.41 KB 0644
shm.h File 1.71 KB 0644
shmem_fs.h File 5.33 KB 0644
shrinker.h File 2.82 KB 0644
signal.h File 12.57 KB 0644
signal_types.h File 1.13 KB 0644
signalfd.h File 817 B 0644
siphash.h File 5.59 KB 0644
sirfsoc_dma.h File 162 B 0644
sizes.h File 1.26 KB 0644
skb_array.h File 5.17 KB 0644
skbuff.h File 120.16 KB 0644
slab.h File 21.45 KB 0644
slab_def.h File 2.37 KB 0644
slub_def.h File 5.44 KB 0644
sm501-regs.h File 11.76 KB 0644
sm501.h File 4.63 KB 0644
smc911x.h File 294 B 0644
smc91x.h File 1.57 KB 0644
smp.h File 5.67 KB 0644
smpboot.h File 2.17 KB 0644
smsc911x.h File 2.29 KB 0644
smscphy.h File 1.25 KB 0644
sock_diag.h File 2.16 KB 0644
socket.h File 11.35 KB 0644
sonet.h File 469 B 0644
sony-laptop.h File 1.28 KB 0644
sonypi.h File 2.35 KB 0644
sort.h File 247 B 0644
sound.h File 807 B 0644
soundcard.h File 1.59 KB 0644
spinlock.h File 11.04 KB 0644
spinlock_api_smp.h File 5.4 KB 0644
spinlock_api_up.h File 3.31 KB 0644
spinlock_types.h File 1.99 KB 0644
spinlock_types_up.h File 726 B 0644
spinlock_up.h File 2.16 KB 0644
splice.h File 3.01 KB 0644
spmi.h File 5.95 KB 0644
sram.h File 844 B 0644
srcu.h File 6.38 KB 0644
srcutiny.h File 3.18 KB 0644
srcutree.h File 5.15 KB 0644
ssbi.h File 1.11 KB 0644
stackdepot.h File 967 B 0644
stackprotector.h File 324 B 0644
stacktrace.h File 1.45 KB 0644
start_kernel.h File 334 B 0644
stat.h File 1.18 KB 0644
statfs.h File 1.31 KB 0644
static_key.h File 30 B 0644
stddef.h File 620 B 0644
ste_modem_shm.h File 1.59 KB 0644
stm.h File 4.75 KB 0644
stmmac.h File 5.39 KB 0644
stmp3xxx_rtc_wdt.h File 332 B 0644
stmp_device.h File 619 B 0644
stop_machine.h File 4.68 KB 0644
string.h File 14.97 KB 0644
string_helpers.h File 2.17 KB 0644
stringhash.h File 2.65 KB 0644
stringify.h File 341 B 0644
sudmac.h File 1.24 KB 0644
sungem_phy.h File 3.94 KB 0644
sunserialcore.h File 1.08 KB 0644
sunxi-rsb.h File 2.89 KB 0644
superhyway.h File 2.81 KB 0644
suspend.h File 19.13 KB 0644
svga.h File 3.75 KB 0644
sw842.h File 328 B 0644
swab.h File 569 B 0644
swait.h File 9.33 KB 0644
swap.h File 21.58 KB 0644
swap_cgroup.h File 971 B 0644
swap_slots.h File 840 B 0644
swapfile.h File 556 B 0644
swapops.h File 9.27 KB 0644
swiotlb.h File 3.8 KB 0644
switchtec.h File 8.1 KB 0644
sxgbe_platform.h File 1.34 KB 0644
sync_file.h File 1.57 KB 0644
synclink.h File 989 B 0644
sys.h File 960 B 0644
sys_soc.h File 1.21 KB 0644
syscalls.h File 39.85 KB 0644
syscore_ops.h File 635 B 0644
sysctl.h File 7.55 KB 0644
sysfs.h File 15.41 KB 0644
syslog.h File 1.89 KB 0644
sysrq.h File 1.79 KB 0644
sysv_fs.h File 9.03 KB 0644
t10-pi.h File 1.21 KB 0644
task_io_accounting.h File 1.13 KB 0644
task_io_accounting_ops.h File 2.55 KB 0644
task_work.h File 617 B 0644
taskstats_kern.h File 957 B 0644
tboot.h File 3.99 KB 0644
tc.h File 3.45 KB 0644
tca6416_keypad.h File 847 B 0644
tcp.h File 15.13 KB 0644
tee_drv.h File 8.27 KB 0644
textsearch.h File 4.73 KB 0644
textsearch_fsm.h File 1.19 KB 0644
tfrc.h File 1.89 KB 0644
thermal.h File 19.62 KB 0644
thinkpad_acpi.h File 320 B 0644
thread_info.h File 4.1 KB 0644
threads.h File 1.28 KB 0644
thunderbolt.h File 19.02 KB 0644
ti_wilink_st.h File 14.07 KB 0644
tick.h File 7.88 KB 0644
tifm.h File 4.8 KB 0644
timb_dma.h File 1.74 KB 0644
timb_gpio.h File 1.28 KB 0644
time.h File 3.71 KB 0644
time32.h File 5.64 KB 0644
time64.h File 4.01 KB 0644
timecounter.h File 4.58 KB 0644
timekeeper_internal.h File 5.01 KB 0644
timekeeping.h File 5.17 KB 0644
timekeeping32.h File 3.13 KB 0644
timer.h File 6.74 KB 0644
timerfd.h File 508 B 0644
timeriomem-rng.h File 475 B 0644
timerqueue.h File 1.19 KB 0644
timex.h File 6.61 KB 0644
tnum.h File 2.74 KB 0644
topology.h File 4.85 KB 0644
torture.h File 3.58 KB 0644
toshiba.h File 904 B 0644
tpm.h File 3 KB 0644
tpm_command.h File 847 B 0644
trace.h File 964 B 0644
trace_clock.h File 667 B 0644
trace_events.h File 16.65 KB 0644
trace_seq.h File 3.74 KB 0644
tracefs.h File 1.19 KB 0644
tracehook.h File 7.08 KB 0644
tracepoint-defs.h File 778 B 0644
tracepoint.h File 16.26 KB 0644
transport_class.h File 2.5 KB 0644
ts-nbus.h File 532 B 0644
tsacct_kern.h File 1.2 KB 0644
tty.h File 28.03 KB 0644
tty_driver.h File 15.45 KB 0644
tty_flip.h File 1.62 KB 0644
tty_ldisc.h File 7.69 KB 0644
typecheck.h File 624 B 0644
types.h File 5.61 KB 0644
u64_stats_sync.h File 5.43 KB 0644
uaccess.h File 9.95 KB 0644
ucb1400.h File 4.26 KB 0644
ucs2_string.h File 662 B 0644
udp.h File 3.65 KB 0644
uidgid.h File 4.07 KB 0644
uio.h File 7.66 KB 0644
uio_driver.h File 4.07 KB 0644
umh.h File 1.79 KB 0644
uprobes.h File 6.28 KB 0644
usb.h File 75.97 KB 0644
usb_usual.h File 3.58 KB 0644
usbdevice_fs.h File 2.18 KB 0644
user-return-notifier.h File 1.18 KB 0644
user.h File 22 B 0644
user_namespace.h File 4.34 KB 0644
userfaultfd_k.h File 3.57 KB 0644
util_macros.h File 1.17 KB 0644
uts.h File 388 B 0644
utsname.h File 1.72 KB 0644
uuid.h File 2.35 KB 0644
uwb.h File 25.22 KB 0644
verification.h File 1.57 KB 0644
vermagic.h File 1.05 KB 0644
vexpress.h File 1.44 KB 0644
vfio.h File 6.32 KB 0644
vfs.h File 116 B 0644
vga_switcheroo.h File 8.4 KB 0644
vgaarb.h File 5.12 KB 0644
via-core.h File 7.27 KB 0644
via-gpio.h File 334 B 0644
via.h File 932 B 0644
via_i2c.h File 1.48 KB 0644
videodev2.h File 2.68 KB 0644
virtio.h File 7.07 KB 0644
virtio_byteorder.h File 1.46 KB 0644
virtio_caif.h File 492 B 0644
virtio_config.h File 12.82 KB 0644
virtio_console.h File 1.93 KB 0644
virtio_net.h File 5.33 KB 0644
virtio_ring.h File 2.96 KB 0644
virtio_vsock.h File 5.05 KB 0644
vlynq.h File 3.88 KB 0644
vm_event_item.h File 2.96 KB 0644
vm_sockets.h File 703 B 0644
vmacache.h File 932 B 0644
vmalloc.h File 6.29 KB 0644
vme.h File 5.66 KB 0644
vmpressure.h File 1.7 KB 0644
vmstat.h File 10.93 KB 0644
vmw_vmci_api.h File 3.19 KB 0644
vmw_vmci_defs.h File 27.93 KB 0644
vringh.h File 7.76 KB 0644
vt.h File 611 B 0644
vt_buffer.h File 1.49 KB 0644
vt_kern.h File 6.21 KB 0644
vtime.h File 3.57 KB 0644
w1-gpio.h File 729 B 0644
w1.h File 9.13 KB 0644
wait.h File 36.36 KB 0644
wait_bit.h File 9.85 KB 0644
wanrouter.h File 210 B 0644
watchdog.h File 7.81 KB 0644
win_minmax.h File 832 B 0644
wireless.h File 1.4 KB 0644
wkup_m3_ipc.h File 1.53 KB 0644
wl12xx.h File 1.39 KB 0644
wm97xx.h File 10.61 KB 0644
wmi.h File 1.94 KB 0644
workqueue.h File 21.56 KB 0644
writeback.h File 12.13 KB 0644
ww_mutex.h File 12.42 KB 0644
xattr.h File 3.38 KB 0644
xxhash.h File 7.65 KB 0644
xz.h File 11.16 KB 0644
yam.h File 2.82 KB 0644
z2_battery.h File 318 B 0644
zbud.h File 740 B 0644
zconf.h File 1.73 KB 0644
zlib.h File 27.97 KB 0644
zorro.h File 3.94 KB 0644
zpool.h File 2.99 KB 0644
zsmalloc.h File 1.64 KB 0644
zstd.h File 48.64 KB 0644
zutil.h File 2.73 KB 0644