小结linux框架下函数如何可以使其被其他文件调用
2012-10-22 13:21
302 查看
http://blog.csdn.net/eqwewr/article/details/7664775
1:通常export该函数。
2:获取结构体指针:在driver设个全局变量。
下面贴出自己写的xenon flash driver部分代码。
struct xenon_flash_chip {
struct i2c_client *xenon_flash_client;
};
static struct xenon_flash_chip *xenon_chip;
//this is just for debug
int xenon_flash_reread(void)
{
int err = 0;
u8 data;
struct xenon_flash_chip *chip;
if(xenon_chip==NULL)
return err;
chip=xenon_chip;
//read 07
err = xenon_flash_i2c_read(chip->xenon_flash_client,0x07,&data);
if (err < 0)
return err;
CDBG("[xenon_flash]reg_control reg=0x07 data=0x0%x\n",data);
//read 06
err = xenon_flash_i2c_read(chip->xenon_flash_client,0x06,&data);
if (err < 0)
return err;
CDBG("[xenon_flash]reg_control reg=0x06 data=0x0%x\n",data);
//read 04
err = xenon_flash_i2c_read(chip->xenon_flash_client,0x04,&data);
if (err < 0)
return err;
CDBG("[xenon_flash]reg_control reg=0x04 data=0x0%x\n",data);
return err;
}
EXPORT_SYMBOL(xenon_flash_reread);
static int __devinit xenon_flash_i2c_probe(struct i2c_client *client,
const struct i2c_device_id *id)
{
int rc = 0;
static const u32 i2c_funcs = I2C_FUNC_SMBUS_BYTE_DATA |
I2C_FUNC_SMBUS_WRITE_WORD_DATA;
struct xenon_flash_chip *chip;
struct xenon_flash_platform_data *pdata;
CDBG("xenon_flash_i2c_probe called!\n");
/* check */
if (client->dev.platform_data == NULL) {
dev_err(&client->dev, "xenon_flash platform data is NULL.
exiting.\n");
return -ENODEV;
}
/* Copy to global variable */
pdata = client->dev.platform_data;
/*check i2c func*/
if (!i2c_check_functionality(client->adapter, i2c_funcs))
return -ENOSYS;
/* Allocate memory for driver data */
chip = kzalloc(sizeof(struct xenon_flash_chip), GFP_KERNEL);
if (!chip)
return -ENOMEM;
xenon_chip = chip;
i2c_set_clientdata(client,chip);
chip->xenon_flash_client = client;
rc = xenon_flash_init_hw(chip,pdata);
if (rc < 0)
CDBG("xenon_flash_init_hw initlised failed!\n");
return 0;
}
在driver调试过程中,通常需要将关键函数export出来,在其他地方extern声明再调用调试。
以上摘自自己写的疝气闪光灯driver.
1:通常export该函数。
2:获取结构体指针:在driver设个全局变量。
下面贴出自己写的xenon flash driver部分代码。
struct xenon_flash_chip {
struct i2c_client *xenon_flash_client;
};
static struct xenon_flash_chip *xenon_chip;
//this is just for debug
int xenon_flash_reread(void)
{
int err = 0;
u8 data;
struct xenon_flash_chip *chip;
if(xenon_chip==NULL)
return err;
chip=xenon_chip;
//read 07
err = xenon_flash_i2c_read(chip->xenon_flash_client,0x07,&data);
if (err < 0)
return err;
CDBG("[xenon_flash]reg_control reg=0x07 data=0x0%x\n",data);
//read 06
err = xenon_flash_i2c_read(chip->xenon_flash_client,0x06,&data);
if (err < 0)
return err;
CDBG("[xenon_flash]reg_control reg=0x06 data=0x0%x\n",data);
//read 04
err = xenon_flash_i2c_read(chip->xenon_flash_client,0x04,&data);
if (err < 0)
return err;
CDBG("[xenon_flash]reg_control reg=0x04 data=0x0%x\n",data);
return err;
}
EXPORT_SYMBOL(xenon_flash_reread);
static int __devinit xenon_flash_i2c_probe(struct i2c_client *client,
const struct i2c_device_id *id)
{
int rc = 0;
static const u32 i2c_funcs = I2C_FUNC_SMBUS_BYTE_DATA |
I2C_FUNC_SMBUS_WRITE_WORD_DATA;
struct xenon_flash_chip *chip;
struct xenon_flash_platform_data *pdata;
CDBG("xenon_flash_i2c_probe called!\n");
/* check */
if (client->dev.platform_data == NULL) {
dev_err(&client->dev, "xenon_flash platform data is NULL.
exiting.\n");
return -ENODEV;
}
/* Copy to global variable */
pdata = client->dev.platform_data;
/*check i2c func*/
if (!i2c_check_functionality(client->adapter, i2c_funcs))
return -ENOSYS;
/* Allocate memory for driver data */
chip = kzalloc(sizeof(struct xenon_flash_chip), GFP_KERNEL);
if (!chip)
return -ENOMEM;
xenon_chip = chip;
i2c_set_clientdata(client,chip);
chip->xenon_flash_client = client;
rc = xenon_flash_init_hw(chip,pdata);
if (rc < 0)
CDBG("xenon_flash_init_hw initlised failed!\n");
return 0;
}
在driver调试过程中,通常需要将关键函数export出来,在其他地方extern声明再调用调试。
以上摘自自己写的疝气闪光灯driver.
相关文章推荐
- 小结linux框架下函数如何可以使其被其他文件调用
- 【python】如何在某.py文件中调用其他.py内的函数
- 【python】如何在某.py文件中调用其他.py内的函数
- c++中如何在主函数中调用其他文件内的函数?
- 【python】如何在某.py文件中调用其他.py内的函数
- 转:python之如何在某文件中调用其他文件内的函数
- 【python】如何在某.py文件中调用其他.py内的函数
- keil 中如何调用其他文件的函数
- 如何在某.py文件中调用其他.py内的函数
- 如何在页面每次刷新的时候可以调用一个javascript写的函数
- 如何在Linux ELF格式的文件(可执行binary,以及so文件)中定位到对应的函数位置
- 如何在LINUX下查看一个.o文件里有哪些函数
- VC下如何调用控制台命令以及其他可执行文件
- C++ 调用其他文件的变量或函数
- [linux.kernel,c]如何调用内核中的函数
- 如何在linux C/C++语言中调用 sqlite 的函数接口来实现对数据库的管理(转)
- Linux下静态库_库的基本概念;如何生成静态库动态库;nm查看库中包含那些函数、ar生成静态库,查看库中包含那些.o文件、ldd查看程序依赖的.so文件;gcc/g++与库相关的参数-L,-l,-f
- ...后台代码中如何调用 javascript 函数的问题! - ASP.NET专题(按钮事件中调用JS文件中函数)
- iOS 里面如何使用第三方应用程序打开自己的文件,调用wps其他应用打开当前应用里面的的ppt doc xls
- 头文件函数未声明,在其他文件中直接调用函数在编译阶段的结果