cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

transport.h (2465B)


      1/* SPDX-License-Identifier: GPL-2.0-only */
      2/*
      3 * Transport Definition
      4 *
      5 *  Copyright (C) 2005 by Latchesar Ionkov <lucho@ionkov.net>
      6 *  Copyright (C) 2004-2008 by Eric Van Hensbergen <ericvh@gmail.com>
      7 */
      8
      9#ifndef NET_9P_TRANSPORT_H
     10#define NET_9P_TRANSPORT_H
     11
     12#include <linux/module.h>
     13
     14#define P9_DEF_MIN_RESVPORT	(665U)
     15#define P9_DEF_MAX_RESVPORT	(1023U)
     16
     17/**
     18 * struct p9_trans_module - transport module interface
     19 * @list: used to maintain a list of currently available transports
     20 * @name: the human-readable name of the transport
     21 * @maxsize: transport provided maximum packet size
     22 * @def: set if this transport should be considered the default
     23 * @create: member function to create a new connection on this transport
     24 * @close: member function to discard a connection on this transport
     25 * @request: member function to issue a request to the transport
     26 * @cancel: member function to cancel a request (if it hasn't been sent)
     27 * @cancelled: member function to notify that a cancelled request will not
     28 *             receive a reply
     29 *
     30 * This is the basic API for a transport module which is registered by the
     31 * transport module with the 9P core network module and used by the client
     32 * to instantiate a new connection on a transport.
     33 *
     34 * The transport module list is protected by v9fs_trans_lock.
     35 */
     36
     37struct p9_trans_module {
     38	struct list_head list;
     39	char *name;		/* name of transport */
     40	int maxsize;		/* max message size of transport */
     41	int def;		/* this transport should be default */
     42	struct module *owner;
     43	int (*create)(struct p9_client *client,
     44		      const char *devname, char *args);
     45	void (*close)(struct p9_client *client);
     46	int (*request)(struct p9_client *client, struct p9_req_t *req);
     47	int (*cancel)(struct p9_client *client, struct p9_req_t *req);
     48	int (*cancelled)(struct p9_client *client, struct p9_req_t *req);
     49	int (*zc_request)(struct p9_client *client, struct p9_req_t *req,
     50			  struct iov_iter *uidata, struct iov_iter *uodata,
     51			  int inlen, int outlen, int in_hdr_len);
     52	int (*show_options)(struct seq_file *m, struct p9_client *client);
     53};
     54
     55void v9fs_register_trans(struct p9_trans_module *m);
     56void v9fs_unregister_trans(struct p9_trans_module *m);
     57struct p9_trans_module *v9fs_get_trans_by_name(const char *s);
     58struct p9_trans_module *v9fs_get_default_trans(void);
     59void v9fs_put_trans(struct p9_trans_module *m);
     60
     61#define MODULE_ALIAS_9P(transport) \
     62	MODULE_ALIAS("9p-" transport)
     63
     64#endif /* NET_9P_TRANSPORT_H */