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

📄 linsys.c

📁 这个linux源代码是很全面的~基本完整了~使用c编译的~由于时间问题我没有亲自测试~但就算用来做参考资料也是非常好的
💻 C
字号:
/* * Copyright (C) Eicon Technology Corporation, 2000. * * Eicon File Revision :    1.10   * * This software may be used and distributed according to the terms * of the GNU General Public License, incorporated herein by reference. * */#include <linux/sched.h>#undef N_DATA#include <linux/tqueue.h>#include <linux/smp.h>struct pt_regs;#include <linux/interrupt.h>#include <linux/ioport.h>#include "sys.h"#include "divas.h"#include "adapter.h"#include "divalog.h"#include "uxio.h"int Divas4BRIInitPCI(card_t *card, dia_card_t *cfg){	/* Use UxPciConfigWrite	routines to initialise PCI config space *//*	wPCIcommand = 0x03;	cm_write_devconfig16(CMKey, PCI_COMMAND, &wPCIcommand);	wPCIcommand = 0x280;	cm_write_devconfig16(CMKey, PCI_STATUS, &wPCIcommand);	bPCIcommand = 0x30;	cm_write_devconfig16(CMKey, PCI_STATUS, &wPCIcommand);*/	return 0; }int DivasPRIInitPCI(card_t *card, dia_card_t *cfg){	/* Use UxPciConfigWrite	routines to initialise PCI config space *//*		wPCIcommand = 0x03;	cm_write_devconfig16(CMKey, PCI_COMMAND, &wPCIcommand);		wPCIcommand = 0x280;	cm_write_devconfig16(CMKey, PCI_STATUS, &wPCIcommand);		bPCIcommand = 0x30;	cm_write_devconfig8(CMKey, PCI_LATENCY, &bPCIcommand);*/	return 0;  }int DivasBRIInitPCI(card_t *card, dia_card_t *cfg){	/* Need to set these platform dependent values after patching */	card->hw->reset_base = card->cfg.reset_base;	card->hw->io_base = card->cfg.io_base;	request_region(card->hw->reset_base,0x80,"Divas");	request_region(card->hw->io_base,0x20,"Divas");	/* Same as for PRI */	return DivasPRIInitPCI(card, cfg);}/* ######################### Stubs of routines that are not done yet ################## *//*void DivasLogIdi(card_t *card, ENTITY *e, int request){}*/int	DivasDpcSchedule(void){	static	struct tq_struct DivasTask;	DivasTask.routine = DivasDoDpc;	DivasTask.data = (void *) 0;	queue_task(&DivasTask, &tq_immediate);	mark_bh(IMMEDIATE_BH);	return 0;}int	DivasScheduleRequestDpc(void){	static	struct tq_struct DivasTask;	DivasTask.routine = DivasDoRequestDpc;	DivasTask.data = (void *) 0;	queue_task(&DivasTask, &tq_immediate);	mark_bh(IMMEDIATE_BH);	return 0;}void    DivasLogAdd(void *buffer, int length){    static    boolean_t   overflow = FALSE;    static    boolean_t   busy = FALSE;    /* make sure we're not interrupting ourselves */    if (busy)    {        printk(KERN_DEBUG "Divas: Logging interrupting self !\n");        return;    }    busy = TRUE;    /* ignore call if daemon isn't running and we've reached limit */    if (DivasLogFifoFull())    {        if (!overflow)        {            printk(KERN_DEBUG "Divas: Trace buffer full\n");            overflow = TRUE;        }        busy = FALSE;        return;    }	DivasLogFifoWrite(buffer, length);    busy = FALSE;    return;}/* #################################################################################### */

⌨️ 快捷键说明

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