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

做视频资源网站有哪些难点什么网站可以兼职做设计

做视频资源网站有哪些难点,什么网站可以兼职做设计,专注做xp的网站,公司请人做公司网站会计分录简介#xff1a; CSDN博客专家#xff0c;专注Android/Linux系统#xff0c;分享多mic语音方案、音视频、编解码等技术#xff0c;与大家一起成长#xff01; 优质专栏#xff1a;Audio工程师进阶系列【原创干货持续更新中……】#x1f680; 优质专栏#xff1a;多媒… 简介 CSDN博客专家专注Android/Linux系统分享多mic语音方案、音视频、编解码等技术与大家一起成长 优质专栏Audio工程师进阶系列【原创干货持续更新中……】 优质专栏多媒体系统工程师系列【原创干货持续更新中……】 优质视频课程AAOS车载系统AOSP14系统攻城狮入门实战课【原创干货持续更新中……】 人生格言 人生从来没有捷径只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注Android系统攻城狮 文章目录 1.前言2.Android内核之binder_ioctl_write_read介绍3.代码实例3.1 发送Binder消息3.2 接收Binder消息3.3 Binder事件通知 1.前言 本篇目的Android内核之IPC通信:binder_ioctl_write_read用法实例 2.Android内核之binder_ioctl_write_read介绍 binder_ioctl_write_read是Android系统中Binder驱动的关键函数之一用于在用户空间和内核空间之间进行进程间通信IPC。Android的Binder机制是一种高效的IPC机制用于在Android系统中进行进程间通信特别是在应用程序和系统服务之间。 该函数的主要作用是通过ioctl系统调用在用户空间和内核空间之间传递数据。在Binder中进程可以通过Binder节点向Binder驱动发送请求消息而Binder驱动负责将这些消息传递到目标进程。在内核空间中这些请求消息和响应消息被表示为数据结构并通过binder_ioctl_write_read函数进行读写。 具体而言binder_ioctl_write_read函数的作用包括 消息传递 通过该函数应用程序可以向Binder驱动发送请求消息例如调用远程服务的请求或发送数据给其他进程。 数据交换 该函数允许应用程序和内核空间之间交换数据实现进程间通信。数据可以是任何形式的信息如函数调用、参数、返回值等。 事件通知 Binder机制还支持事件通知例如进程间的状态变化或系统服务的可用性。binder_ioctl_write_read函数可以用于发送和接收这些事件通知。 错误处理 除了消息传递外该函数还负责处理可能发生的错误情况。例如当发送消息失败或接收到无效的消息时函数会返回相应的错误码应用程序可以据此进行错误处理。 使用binder_ioctl_write_read函数需要一定的内核编程知识和经验。开发者需要了解Binder驱动的工作原理以及消息传递的机制同时要熟悉ioctl系统调用的使用方法。在实际开发中通常会使用高级别的API和框架来进行Binder通信这些API和框架会封装底层的细节简化开发过程。 binder_ioctl_write_read函数在Android系统中扮演着至关重要的角色它为应用程序提供了一种强大的IPC机制支持应用程序之间和应用程序与系统服务之间的通信促进了Android系统的功能丰富和性能优化。 3.代码实例 3.1 发送Binder消息 #include linux/module.h #include linux/kernel.h #include linux/fs.h #include linux/uaccess.h #include linux/android/binder.h#define DEVICE_NAME binder_example #define BINDER_DEV_PATH /dev/binder_examplestatic int major_number; static struct class *binder_class NULL; static struct device *binder_device NULL;// 打开Binder设备 static int binder_open(struct inode *inode, struct file *file) {printk(KERN_INFO Binder device opened\n);return 0; }// 释放Binder设备 static int binder_release(struct inode *inode, struct file *file) {printk(KERN_INFO Binder device closed\n);return 0; }// 实现Binder设备的ioctl操作 static long binder_ioctl(struct file *file, unsigned int cmd, unsigned long arg) {int ret 0;struct binder_write_read bwr;switch (cmd) {case BINDER_SEND_MESSAGE:// 发送Binder消息// 在这里构造消息数据并使用binder_ioctl_write_read发送消息break;default:printk(KERN_ERR Unknown command\n);ret -EINVAL;break;}return ret; }// 初始化Binder设备 static int __init binder_init(void) {// 分配主设备号major_number register_chrdev(0, DEVICE_NAME, binder_fops);if (major_number 0) {printk(KERN_ALERT Failed to register a major number\n);return major_number;}// 创建设备类binder_class class_create(THIS_MODULE, DEVICE_NAME);if (IS_ERR(binder_class)) {unregister_chrdev(major_number, DEVICE_NAME);printk(KERN_ALERT Failed to register device class\n);return PTR_ERR(binder_class);}// 创建设备节点binder_device device_create(binder_class, NULL, MKDEV(major_number, 0), NULL, DEVICE_NAME);if (IS_ERR(binder_device)) {class_destroy(binder_class);unregister_chrdev(major_number, DEVICE_NAME);printk(KERN_ALERT Failed to create the device\n);return PTR_ERR(binder_device);}printk(KERN_INFO Binder module initialized\n);return 0; }// 卸载Binder设备 static void __exit binder_exit(void) {device_destroy(binder_class, MKDEV(major_number, 0));class_unregister(binder_class);class_destroy(binder_class);unregister_chrdev(major_number, DEVICE_NAME);printk(KERN_INFO Binder module exit\n); }module_init(binder_init); module_exit(binder_exit); MODULE_LICENSE(GPL);3.2 接收Binder消息 #include linux/module.h #include linux/kernel.h #include linux/fs.h #include linux/uaccess.h #include linux/android/binder.h#define DEVICE_NAME binder_example #define BINDER_DEV_PATH /dev/binder_examplestatic int major_number; static struct class *binder_class NULL; static struct device *binder_device NULL;// 打开Binder设备 static int binder_open(struct inode *inode, struct file *file) {printk(KERN_INFO Binder device opened\n);return 0; }// 释放Binder设备 static int binder_release(struct inode *inode, struct file *file) {printk(KERN_INFO Binder device closed\n);return 0; }// 实现Binder设备的ioctl操作 static long binder_ioctl(struct file *file, unsigned int cmd, unsigned long arg) {int ret 0;struct binder_write_read bwr;switch (cmd) {case BINDER_RECEIVE_MESSAGE:// 接收Binder消息// 在这里构造消息数据并使用binder_ioctl_write_read接收消息break;default:printk(KERN_ERR Unknown command\n);ret -EINVAL;break;}return ret; }// 初始化Binder设备 static int __init binder_init(void) {// 分配主设备号major_number register_chrdev(0, DEVICE_NAME, binder_fops);if (major_number 0) {printk(KERN_ALERT Failed to register a major number\n);return major_number;}// 创建设备类binder_class class_create(THIS_MODULE, DEVICE_NAME);if (IS_ERR(binder_class)) {unregister_chrdev(major_number, DEVICE_NAME);printk(KERN_ALERT Failed to register device class\n);return PTR_ERR(binder_class);}// 创建设备节点binder_device device_create(binder_class, NULL, MKDEV(major_number, 0), NULL, DEVICE_NAME);if (IS_ERR(binder_device)) {class_destroy(binder_class);unregister_chrdev(major_number, DEVICE_NAME);printk(KERN_ALERT Failed to create the device\n);return PTR_ERR(binder_device);}printk(KERN_INFO Binder module initialized\n);return 0; }// 卸载Binder设备 static void __exit binder_exit(void) {device_destroy(binder_class, MKDEV(major_number, 0));class_unregister(binder_class);class_destroy(binder_class);unregister_chrdev(major_number, DEVICE_NAME);printk(KERN_INFO Binder module exit\n); }module_init(binder_init); module_exit(binder_exit); MODULE_LICENSE(GPL);3.3 Binder事件通知 #include linux/module.h #include linux/kernel.h #include linux/fs.h #include linux/uaccess.h #include linux/android/binder.h#define DEVICE_NAME binder_example #define BINDER_DEV_PATH /dev/binder_examplestatic int major_number; static struct class *binder_class NULL; static struct device *binder_device NULL;// 打开Binder设备 static int binder_open(struct inode *inode, struct file *file) {printk(KERN_INFO Binder device opened\n);return 0; }// 释放Binder设备 static int binder_release(struct inode *inode, struct file *file) {printk(KERN_INFO Binder device closed\n);return 0; }// 实现Binder设备的ioctl操作 static long binder_ioctl(struct file *file, unsigned int cmd, unsigned long arg) {int ret 0;struct binder_write_read bwr;switch (cmd) {case BINDER_RECEIVE_EVENT:// 接收Binder事件通知// 在这里构造事件数据并使用binder_ioctl_write_read接收事件break;default:printk(KERN_ERR Unknown command\n);ret -EINVAL;break;}return ret; }// 初始化Binder设备 static int __init binder_init(void) {// 分配主设备号major_number register_chrdev(0, DEVICE_NAME, binder_fops);if (major_number 0) {printk(KERN_ALERT Failed to register a major number\n);return major_number;}// 创建设备类binder_class class_create(THIS_MODULE, DEVICE_NAME);if (IS_ERR(binder_class)) {unregister_chrdev(major_number, DEVICE_NAME);printk(KERN_ALERT Failed to register device class\n);return PTR_ERR(binder_class);}// 创建设备节点binder_device device_create(binder_class, NULL, MKDEV(major_number, 0), NULL, DEVICE_NAME);if (IS_ERR(binder_device)) {class_destroy(binder_class);unregister_chrdev(major_number, DEVICE_NAME);printk(KERN_ALERT Failed to create the device\n);return PTR_ERR(binder_device);}printk(KERN_INFO Binder module initialized\n);return 0; }// 卸载Binder设备 static void __exit binder_exit(void) {device_destroy(binder_class, MKDEV(major_number, 0));class_unregister(binder_class);class_destroy(binder_class);unregister_chrdev(major_number, DEVICE_NAME);printk(KERN_INFO Binder module exit\n); }module_init(binder_init); module_exit(binder_exit); MODULE_LICENSE(GPL);
http://www.dnsts.com.cn/news/250483.html

相关文章:

  • 常州专业网站建设推广东莞 网站推广
  • php网站开发软件编程微信公众号登录失败
  • 如何学网站开发网站建设都用哪个好
  • 如何向百度提交网站宁波网站建设公司网络推广
  • 企业企业网站建电子商务网站建设.pdf
  • 做网站首页图片素材重庆建筑模板
  • 怎么用云服务器做网站仿网站收费
  • 郑州网站建设zhuotop河间做网站 申梦网络
  • 企业管理软件a6怎么新建账套企业优化网站
  • 网站建设合同 模板商务网站网络环境设计
  • 厦门哪里做网站上海网络宣传公司
  • 网站的根目录的路径定制旅游网站建设方案
  • 国内优秀设计网站推荐wordpress心情插件
  • 沈阳模板 网站建设把自己做的网页发布到网站
  • 中小企业网站建设与管理自己公司做网站
  • 安庆网站建设专业组成原理毕业设计代做网站推荐
  • php怎么做网站后台网站权重2的网站
  • 政务网站建设管理了解网站的建设心得
  • 公司网站如何做维护营销网络用语
  • 做英文网站地图商标注册号是什么
  • 网站建设涉及的内容山西省住房建设厅网站首页
  • 网站的流量建设常州网站建设常州
  • 网站开发二级域名如何做网站快捷键的元素
  • 钓鱼网站源码wordpress 图片选择
  • 网络科技有限公司和科技有限公司的区别网站推广优化联系方式
  • 免费网站建设行情烟台商城网站制作
  • 网站域名怎么申请温州建设局网站首页
  • 学网站建设哪里好网站建设属于商标哪个类
  • 东三省网站建设公司岳阳做网站多少钱
  • 网站建设属于什么领域做期权关注哪个网站