C语言其他函数学习

goto

goto语句也称为无条件转移语句,其一般格式如:

goto 语句标号;

其中语句标号是按标识符规定书写的符号, 放在某一语句行的前面,标号后加半角冒号“:”。语句标号起标识语句的作用,与 goto 语句配合使用。

static int __init led_init(void) {
int ret;
led_dev = cdev_alloc(); //动态申请一个设备结构体
if(led_dev == NULL) {
goto error;
}
ret = alloc_chrdev_region(&led_dev_num,0,1,"led"); //动态申请一个设备号
if(ret != 0) {
goto error;  //转入下方error段落
}
led_dev->owner = THIS_MODULE; //初始化设备管理结构体的 owner 为 THIS_MODULE
led_dev->ops = &led_ops; //初始化设备操作函数指针为 led_ops 函数
cdev_add(led_dev,led_dev_num,1); //将设备添加到内核中
led_class = class_create(THIS_MODULE, "led_class"); //创建一个类
if(led_class == NULL) {
goto error;
}
led0 = device_create(led_class,NULL,led_dev_num,NULL,"led0")
13; //创建一个设备
if(IS_ERR(led0))
{
goto error;
}
gpioe_cfg0 = ioremap(GPIOE_CFG0,4); //将 GPIOE_CFG0 物理地址映射为虚拟地址
gpioe_cfg1 = ioremap(GPIOE_CFG1,4); //将 GPIOE_CFG1 物理地址映射为虚拟地址
gpioe_data = ioremap(GPIOE_DATA,4); //将 GPIOE_DATA 物理地址映射为虚拟地址
gpioe_pul0 = ioremap(GPIOE_PUL0,4); //将 GPIOE_PUL0 物理地址映射为虚拟地址
return 0;
error:         //error段落
printk(KERN_WARNING"led_init failed!\n");
return 1; }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值