如何自动创建结点

方法一. 在驱动里
   转 自学驱动以来,一直都是在加载模块后采用手动创建节点,虽然这个过程比较简单,毕竟还是有点麻烦,尤其是在调试模块的时候。
#insmod module_name.ko
#mknod /dev/module_name c MAJOR MINOR
#
在2.4里设备文件采用的是devfs,在2.6里已经用udev取代devfs,为解决上面那样手动创建节点的麻烦,我们可以在程序里加上创建节点这项,如下:
以字符设备char_dev为例,在驱动初始化的代码里调用class_create为该设备创建一个class,再为每个设备调用 class_device_create创建对应的设备,这样的module被加载时,undev daemon就会自动在/dev下创建char_dev设备文件。大概方法如下:
struct class *myclass = class_create(THIS_MODULE, “char_dev”);
class_device_create(myclass, NULL, MKDEV(major_num, 0), NULL, “char_dev”);

当然,在exit函数中要把创建的class移除:
device_destroy(myclass, MKDEV(major_num, 0));         //delete device node under /dev
class_destroy(myclass);

 

方法二,在脚本里

#!/bin/ash

rm -rf /tmp/dev/
mkdir /tmp/
mkdir /tmp/dev/

path="/lib/modules/2.6.32/kernel/drivers/char/dc/cxon2"
module="hx170dec"
device="/tmp/dev/hx170"
mode="666"

echo

#insert module
insmod $path/$module.ko base_port=0xf00c4000 irq=58 || exit 1

echo "module $module inserted"

#remove old nod
rm -f $device

#read the major asigned at loading time
major=`cat /proc/devices | grep $module | cut -c1-3`

echo "$module major = $major"

#create dev node
mknod $device c $major 0

echo "node $device created"

#give all 'rw' access
chmod $mode $device

echo "set node access to $mode"

#the end
echo      

要实现Flowable中任务节点一段时间未审批自动完成审批的功能,你可以借助定时器事件和流程变量。以下是一个示例的实现方法: 1. 在流程定义文件中,为需要设置自动完成审批的任务节点添加一个定时器事件(Timer Event)。可以使用`timerEventDefinition`元素来定义触发条件。 ```xml <userTask id="task1" name="审批任务" activiti:assignee="${assignee}"> <extensionElements> <activiti:taskListener event="create"> <activiti:expression><![CDATA[${execution.setVariable("dueDate", new java.util.Date().getTime() + 24 * 60 * 60 * 1000)}]]></activiti:expression> </activiti:taskListener> </extensionElements> <timerEventDefinition> <timeDuration>${execution.getVariable("dueDate")}</timeDuration> </timerEventDefinition> </userTask> ``` 2. 在上述示例中,我们通过设置一个`dueDate`变量来记录任务的超时时间。在任务创建时,通过`taskListener`将当前时间加上24小时作为超时时间,并存储到`dueDate`变量中。然后,在定时器事件的`timeDuration`中使用这个变量作为触发条件。 3. 当流程执行到该任务节点时,定时器事件会根据超时时间进行触发。如果任务超时,定时器事件会自动触发并将任务标记为已完成。 通过这种方式,如果任务在指定的时间内没有被审批,定时器事件会触发自动完成审批的操作。 请注意,上述示例中的`${assignee}`是一个占位符,你需要根据实际情况为任务指定审批人。 希望这个解答对你有帮助!如果还有其他问题,请继续提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值