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

📄 ee_cmd.c,v

📁 用TCP/IP进行网际互连这本书得源代码,偶得,希望大家喜欢.推荐下载
💻 C,V
字号:
head	1.1;access;symbols;locks	dls:1.1; strict;comment	@ * @;1.1date	97.09.21.19.25.55;	author dls;	state Dist;branches;next	;desc@@1.1log@pre-3e code@text@/* ee_cmd.c - ee_cmd, ee_wait, ee_ack */#include <conf.h>#include <kernel.h>#include <network.h>#include <i386.h>#include <ee.h>/*------------------------------------------------------------------------ * ee_cmd - issue an Intel 82586 command *------------------------------------------------------------------------ */intee_cmd(ped, cmd, arg1, arg2, arg3)struct etdev	*ped;unsigned short	cmd;char		*arg1, *arg2, *arg3;{	struct devsw	*pdev = ped->ed_pdev;	struct scb	*pscb = ped->ed_scb;	struct cbl	*pcbl = ped->ed_cbl;	ee_wait(ped);	/* build command block */	pcbl->cbl_status = 0;	pcbl->cbl_cmd = cmd | EECMD_EL;	switch (cmd & EECMD_MASK) {	case EECMD_CONFIG:		blkcopy(pcbl->cbl_cfg, arg1, CFLEN);		break;	case EECMD_IASET:		blkcopy(pcbl->cbl_addr, arg1, EP_ALEN);		break;	case EECMD_TX:		pcbl->cbl_tbd = H2IO(ped, ped->ed_tbd);		break;	case EECMD_NOP:		break;	/* not implemented yet */	case EECMD_MCSET:		pcbl->cbl_alen = EP_ALEN * (int)arg2;		blkcopy(pcbl->cbl_mca, arg1, pcbl->cbl_alen);		break;	}	pscb->scb_cmd = SCBCMD_CUS;	pscb->scb_status = 0;	pscb->scb_cbloff = H2IO(ped, pcbl);	outb(pdev->dvcsr + CAC, 0);	/* start the 82586	*/}/*------------------------------------------------------------------------ * ee_wait - wait for 82586 to become ready *------------------------------------------------------------------------ */ee_wait(ped)struct etdev	*ped;{	struct devsw	*pdev = ped->ed_pdev;	struct scb	*pscb = ped->ed_scb;	int		i;		for (i=0; i<5000; ++i)		if (!pscb->scb_cmd)			return;	kprintf("ee%d: ee_wait timed out, SCB status %x cmd %x\n",		pdev->dvminor, pscb->scb_status, pscb->scb_cmd);}/*------------------------------------------------------------------------ * ee_ack - acknowledge status return by Intel 82586 *------------------------------------------------------------------------ */ee_ack(ped, status)struct etdev	*ped;unsigned short	status;{	struct devsw	*pdev = ped->ed_pdev;	struct scb	*pscb = ped->ed_scb;	ee_wait(ped);	pscb->scb_cmd = status & 0xf000;	outb(pdev->dvcsr+CAC, 0);}@

⌨️ 快捷键说明

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