📄 zlg_fs_driver.c
字号:
/****************************************Copyright (c)**************************************************
** Guangzou ZLG-MCU Development Co.,LTD.
** graduate school
** http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name: zlg_fs_driver.c
** Last modified Date: 2005-05-27
** Last Version: 1.0
** Descriptions: This is a Kernel module for uClinux 2.4.x .** This module let uClinux 2.4.x can use ZLG/DRIVER .
**------------------------------------------------------------------------------------------------------
** Created by: Chenmingji
** Created date: 2005-05-27
** Version: 1.0
** Descriptions: The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
**
********************************************************************************************************/
#define IN_ZLG_FS_DRIVER#include "config.h"/********************************************************************************************************
function announce********************************************************************************************************/
int zlg_fs_driver_init(void);void zlg_fs_driver_cleanup(void);/********************************************************************************************************
define announce********************************************************************************************************/
module_init(zlg_fs_driver_init);module_exit(zlg_fs_driver_cleanup);MODULE_LICENSE("Proprietary");MODULE_DESCRIPTION("Guangzou ZLG-MCU Development Co.,LTD.\ngraduate school\nhttp://www.zlgmcu.com");MODULE_SUPPORTED_DEVICE("uClinux2.4.x LPC2200 " DEVICE_NAME);MODULE_AUTHOR("chenmingji");/*********************************************************************************************************
** "全局和静态变量在这里定义"
** global variables and static variables define here
********************************************************************************************************/
static fs_drivers zlg_driver_driver[MAX_DISK_DRIVES];/*********************************************************************************************************
** Function name: zlg_fs_driver_open
** Descriptions: open device
** Input:inode: information of device
** filp: pointer of file
** Output 0: OK
** other: not OK
** Created by: Chenmingji
** Created Date: 2005-05-27
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
static int zlg_fs_driver_get_info(struct _zlg_driver_Info *Disk){
Disk_RW_Parameter dp;
dp.RsvdForLow = Disk->RsvdForLow;
dp.SectorIndex = DISK_GET_BYTES_PER_SECTOR;
if (Disk->DiakCommand(DISK_CHECK_CMD, &dp) == DISK_TRUE)
{ Disk->DiakCommand(DISK_GET_BYTES_PER_SECTOR, &dp);
Disk->BytesPerSec = dp.SectorIndex;
}
else
{
Disk->BytesPerSec = DEVICE_BYTES_PER_SEC;
}
dp.SectorIndex = DISK_GET_SECTOR_NUMBER;
if (Disk->DiakCommand(DISK_CHECK_CMD, &dp) == DISK_TRUE)
{ Disk->DiakCommand(DISK_GET_SECTOR_NUMBER, &dp);
Disk->SecPerDisk = dp.SectorIndex;
}
else
{
Disk->SecPerDisk = DEVICE_SEC_PER_DISK;
}
return 0; /* success */}
/*********************************************************************************************************
** Function name: zlg_fs_driver_open
** Descriptions: open device
** Input:inode: information of device
** filp: pointer of file
** Output 0: OK
** other: not OK
** Created by: Chenmingji
** Created Date: 2005-05-27
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
static int zlg_fs_driver_open(struct inode *inode, struct file *filp){ MOD_INC_USE_COUNT; return 0; /* success */} /*********************************************************************************************************
** Function name: zlg_fs_driver_release
** Descriptions: release device
** Input:inode: information of device
** filp: pointer of file
** Output 0: OK
** other: not OK
** Created by: Chenmingji
** Created Date: 2005-05-27
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
static int zlg_fs_driver_release(struct inode *inode, struct file *filp) { MOD_DEC_USE_COUNT; return 0; }
/*********************************************************************************************************
** Function name: zlg_fs_driver_init
** Descriptions: init driver
** Input:none
** Output 0: OK
** other: not OK
** Created by: Chenmingji
** Created Date: 2005-05-27
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
int zlg_fs_driver_init(void){ int i; drive_init(); for (i = 0; i < MAX_DISK_DRIVES; i++) {
#ifdef DISK_INFO
zlg_driver_driver[i].RsvdForLow = &(DISK_INFO[i]);
#else
zlg_driver_driver[i].RsvdForLow = NULL;
#endif zlg_driver_driver[i].DiakCommand = COMMAND_FUNCTION;
zlg_driver_driver[i].open = zlg_fs_driver_open; zlg_driver_driver[i].release = zlg_fs_driver_release;
zlg_driver_driver[i].get_info = zlg_fs_driver_get_info; zlg_fs_add_driver(&(zlg_driver_driver[i])); } printk(KERN_INFO DEVICE_NAME ": init OK\n"); return(0); }/*********************************************************************************************************
** Function name: zlg_fs_driver_cleanup
** Descriptions: exit driver
** Input:none
** Output none
** Created by: Chenmingji
** Created Date: 2005-05-27
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void zlg_fs_driver_cleanup(void){ int i;
for (i = 0; i < MAX_DISK_DRIVES; i++) { zlg_fs_remove_driver(&(zlg_driver_driver[i])); }}/*********************************************************************************************************** End Of File********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -