当前位置: 首页 > wzjs >正文

java开发工程师工资一般多少seo模拟点击有用吗

java开发工程师工资一般多少,seo模拟点击有用吗,迷你世界怎么做网站期,有赞微商城官网登入驱动开发 如何创建系统属性节点 直接在sys/目录下创建 文章目录 驱动开发前言一、代码添加二、编译三、 验证总结 前言 最简单的系统属性节点控制GPIO 一、代码添加 在AU_LINUX_ANDROID_LA.VENDOR.1.0\kernel_platform\msm-kernel\drivers\misc\目录下新建test.c #include …

驱动开发

如何创建系统属性节点
直接在sys/目录下创建


文章目录

  • 驱动开发
  • 前言
  • 一、代码添加
  • 二、编译
  • 三、 验证
  • 总结


前言

最简单的系统属性节点控制GPIO


一、代码添加

在AU_LINUX_ANDROID_LA.VENDOR.1.0\kernel_platform\msm-kernel\drivers\misc\目录下新建test.c

#include <linux/module.h>
#include <linux/kobject.h>
#include <linux/sysfs.h>
#include <linux/string.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/list.h>
#include <linux/device.h>
#include <linux/err.h>
#include <linux/ctype.h>
#include <linux/platform_device.h>
#include <linux/reboot.h>
#include <linux/kdev_t.h>
#include <linux/fs.h>
#include <linux/cdev.h>
#include <asm/io.h>
#include <linux/ioport.h>static ssize_t eth_en_store(struct kobject *dev,struct kobj_attribute  *attr,const char *buf, size_t len)
{unsigned long new;if (kstrtoul(buf, 0, &new)) {pr_err("%s kstrtoul err\n", __func__);return -EINVAL;}if (!!new == 1) {pr_err("%s set 1, g_rtase_resume\n", __func__);} else {pr_err("%s set 0, g_rtase_suspend\n", __func__);}return len;
}static ssize_t eth_en_show(struct kobject *dev,struct kobj_attribute  *attr, char *buf)
{return sprintf(buf, "%s\n", "sucess");
}static struct kobj_attribute eth_en_attribute_attr =__ATTR(eth_en, S_IWUSR|S_IRUGO, eth_en_show, eth_en_store);static struct attribute *sysfs_eth_en_attributes[] = {&eth_en_attribute_attr.attr,NULL
};static const struct attribute_group sysfs_eth_en_attr_group = {.attrs = sysfs_eth_en_attributes,
};static const struct of_device_id of_test_demo_match[] = {{ .compatible = "test-demo", },{},
};static int test_mode_probe(struct platform_device *pdev)
{printk(KERN_INFO "%s start...\n",__func__);return 0;
}static int test_mode_remove(struct platform_device *pdev)
{return 0;
}static struct platform_driver test_mode_driver = {.probe      = test_mode_probe,.remove     = test_mode_remove,.driver     = {.name   = "test",.owner  = THIS_MODULE,.of_match_table = of_match_ptr(of_test_demo_match),},
};static int test_driver_init(void)
{if ((k_obj = kobject_create_and_add("test_demo", NULL)) == NULL ) {pr_err("sysfs_demo sys node create error \n");}if(sysfs_create_group(k_obj, &sysfs_eth_en_attr_group) ) {pr_err("sysfs_create_group failed\n");}return platform_driver_register(&test_demo_driver);
}static void test_driver_exit(void)
{printk(KERN_INFO "%s,%d: Enter\n",__func__,__LINE__);if (k_obj) {sysfs_remove_group(k_obj, &sysfs_eth_en_attr_group);kobject_put(k_obj);}platform_driver_unregister(&test_demo_driver);return;
}module_init(test_driver_init);
module_exit(test_driver_exit);MODULE_AUTHOR("zh@testsmart.com");
MODULE_DESCRIPTION("testSmart Hardware Verion driver");
MODULE_LICENSE("GPL");
MODULE_ALIAS("platform:test-mode-driver");

修改misc目录下的Makefile
AU_LINUX_ANDROID_LA.VENDOR.1.0\kernel_platform\msm-kernel\drivers\misc\Makefile

+obj-m	+= test_reboot.o

注:obj-m最好是以宏控的方式控制,当然也可以以obj-y的方式编译进内核,后续详细介绍

二、编译

以骁龙8 gen1 plus平台为例
在AU_LINUX_ANDROID_LA.VENDOR.1.0目录下执行:

xxxx@u99:~/AU_LINUX_ANDROID_LA.VENDOR.1.0$bash kernel_platform/qcom/proprietary/prebuilt_HY11/vendorsetup.shxxxx@u99:~/AU_LINUX_ANDROID_LA.VENDOR.1.0$cd kernel_platform/xxxx@u99:~/AU_LINUX_ANDROID_LA.VENDOR.1.0/kernel_platform$BUILD_CONFIG=./common/build.config.msm.waipio ./build/all-variants.sh "./build/build.sh"

如上编译完成后AU_LINUX_ANDROID_LA.VENDOR.1.0\kernel_platform\out\msm-waipio-waipio-consolidate\dist\目录下会生成hello_world.ko;push到设备中验证即可。

三、 验证

adb push AU_LINUX_ANDROID_LA.VENDOR.1.0\kernel_platform\out\msm-waipio-waipio-consolidate\dist\test_reboot.ko /vendor_dlkm/lib/modules/

adb push AU_LINUX_ANDROID_LA.VENDOR.1.0\kernel_platform\out\msm-waipio-waipio-consolidate\dist\test_reboot.ko /vendor/lib/modules/

taro:/ # insmod vendor/lib/modules/test_reboot.ko
taro:/ # taro:/ # find sys/ |grep force_reboot
sys/class/test_class/force_reboottaro:/ # cat sys/class/test_class/force_reboot
0
taro:/ # echo 1 > sys/class/test_class/force_reboot//echo 1 即可重启

总结

关于kobject相关的函数后续继续更新,这个是linux的核心函数

http://www.dtcms.com/wzjs/424845.html

相关文章:

  • win7电脑做网站服务器人工智能培训班收费标准
  • 做网站用的图片网站推广方式
  • 做黏土的网站谷歌浏览器下载安装2023最新版
  • 贵阳专业做网站的公司有哪些制作小程序的软件
  • 网站登录怎么保存用户名密码海淀seo搜索优化多少钱
  • 做外贸用什么网站好网站注册步骤
  • 政府网站后台如何管理十大免费cms建站系统介绍
  • 微信推广网站建设app拉新推广代理平台
  • 珠海做网站的公司打开全网搜索
  • 昆明app开发制作黑帽seo技术有哪些
  • 数学家 wordpressseo是干嘛的
  • 半瓶的wordpress之旅论坛seo招聘
  • 做网站业务员如何跟客户沟通网站超级外链
  • 福州+网站建设+医疗如何建立自己的网站?
  • 做网站的框架模版怎么开发一个网站
  • 徐州 网站 备案 哪个公司做的好做网站关键词优化的公司
  • 学技术包分配的培训机构网络优化工作应该怎么做
  • 手机端网站尺寸规范西安百度推广优化
  • 网站开发案例教堂html佛山网站优化排名推广
  • 做网站反应快的笔记本有哪些长沙seo行者seo09
  • 上海浦东新区疫情专业网站优化公司
  • 网站开发环境的安装说明网站秒收录
  • 日本网站做任务关键字排名优化公司
  • 适合宝妈做兼职的网站网站优化费用报价明细
  • 做网站 视频外链昆明长尾词seo怎么优化
  • 怎么做百度推广网站搜索优化seo
  • 烟台产品网站建设搜索引擎主要包括三个部分
  • twenty ten wordpressseo排名优化服务
  • 南昌建网站的公司关键词排名推广
  • 东莞seo网站建设如何用html制作一个网页