arch/um/drivers/vector_user.h

Source file repositories/reference/linux-study-clean/arch/um/drivers/vector_user.h

File Facts

System
Linux kernel
Corpus path
arch/um/drivers/vector_user.h
Extension
.h
Size
2490 bytes
Lines
108
Domain
Architecture Layer
Bucket
arch/um
Inferred role
Architecture Layer: implementation source
Status
source implementation candidate

Why This File Exists

CPU and platform-specific kernel glue: boot entry, traps, syscall entry, interrupts, page tables, context switch, and low-level barriers.

Dependency Surface

Detected Declarations

Annotated Snippet

struct arglist {
	int	numargs;
	char	*tokens[MAXVARGS];
	char	*values[MAXVARGS];
};

/* Separating read and write FDs allows us to have different
 * rx and tx method. Example - read tap via raw socket using
 * recvmmsg, write using legacy tap write calls
 */

struct vector_fds {
	int rx_fd;
	int tx_fd;
	void *remote_addr;
	int remote_addr_size;
};

#define VECTOR_READ	1

extern struct arglist *uml_parse_vector_ifspec(char *arg);

extern struct vector_fds *uml_vector_user_open(
	int unit,
	struct arglist *parsed
);

extern char *uml_vector_fetch_arg(
	struct arglist *ifspec,
	char *token
);

extern int uml_vector_recvmsg(int fd, void *hdr, int flags);
extern int uml_vector_sendmsg(int fd, void *hdr, int flags);
extern int uml_vector_writev(int fd, void *hdr, int iovcount);
extern int uml_vector_sendmmsg(
	int fd, void *msgvec,
	unsigned int vlen,
	unsigned int flags
);
extern int uml_vector_recvmmsg(
	int fd,
	void *msgvec,
	unsigned int vlen,
	unsigned int flags
);
extern void *uml_vector_default_bpf(const void *mac);
extern void *uml_vector_user_bpf(char *filename);
extern int uml_vector_attach_bpf(int fd, void *bpf);
extern int uml_vector_detach_bpf(int fd, void *bpf);
extern bool uml_raw_enable_qdisc_bypass(int fd);
extern bool uml_raw_enable_vnet_headers(int fd);
extern bool uml_tap_enable_vnet_headers(int fd);


#endif

Annotation

Implementation Notes