⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 setup.c

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 C
字号:
#include <u.h>#include <libc.h>#include <thread.h>#include "usb.h"intsetupcmd(Endpt *e, int type, int req, int value, int index, byte *data, int count){	byte *wp;	int n, i, fd;	if (e == nil)		abort();	fd = e->dev->setup;	if(fd < 0)		sysfatal("RSC: this used to use the global usbsetup0\n");	wp = malloc(8+count);	if (wp == nil) sysfatal("setupcmd: malloc");	wp[0] = type;	wp[1] = req;	PUT2(wp+2, value);	PUT2(wp+4, index);	PUT2(wp+6, count);	memmove(wp+8, data, count);	if (debugdebug) {		fprint(2, "out\t%d\t[%d]", fd, 8+count);		for(i=0; i<8+count; i++)			fprint(2, " %.2ux", wp[i]);		fprint(2, "\n");	}	n = write(fd, wp, 8+count);	if (n < 0) {		fprint(2, "setupreq: write err: %r\n");		return -1;	}	if (n != 8+count) {		fprint(2, "setupcmd: short write: %d\n", n);		return -1;	}	return n;}intsetupreq(Endpt *e, int type, int req, int value, int index, int count){	byte *wp, buf[8];	int n, i, fd;	if (e == nil)		abort();	fd = e->dev->setup;	if(fd < 0)		sysfatal("RSC: this used to use the global usbsetup0\n");	wp = buf;	wp[0] = type;	wp[1] = req;	PUT2(wp+2, value);	PUT2(wp+4, index);	PUT2(wp+6, count);	if (debugdebug) {		fprint(2, "out\t%d\t[8]", fd);		for(i=0; i<8; i++)			fprint(2, " %.2ux", buf[i]);		fprint(2, "\n");	}	n = write(fd, buf, 8);	if (n < 0) {		fprint(2, "setupreq: write err: %r\n");		return -1;	}	if (n != 8) {		fprint(2, "setupreq: short write: %d\n", n);		return -1;	}	return n;}intsetupreply(Endpt *e, void *buf, int nb){	uchar *p;	int i, fd;	char err[32];	fd = e->dev->setup;	if(fd < 0)		sysfatal("RSC: this used to use the global usbsetup0\n");	for(;;){		nb = read(fd, buf, nb);		if (nb >= 0)			break;		rerrstr(err, sizeof err);		if (strcmp(err, "interrupted") != 0)			break;	}	p = buf;	if (debugdebug) {		fprint(2, "in\t%d\t[%d]", fd, nb);		for(i=0; i<nb; i++)			fprint(2, " %.2ux", p[i]);		fprint(2, "\n");	}	return nb;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -