在本文中,我们将详细介绍如何在Linux中创build虚拟io设备,将数据代理到真实设备?的各个方面,并为您提供关于linux创建虚拟ip的相关解答,同时,我们也将为您带来关于Linux内核模块–打开
在本文中,我们将详细介绍如何在Linux中创build虚拟io设备,将数据代理到真实设备?的各个方面,并为您提供关于linux创建虚拟ip的相关解答,同时,我们也将为您带来关于Linux内核模块 – 打开创build的字符设备导致一个错误、为什么 FirebaseAnalytics 看不到真实设备?、使用Azure命令行工具为Linux创build虚拟机、使用C ++在Linux中创build计时器队列的有用知识。
本文目录一览:- 如何在Linux中创build虚拟io设备,将数据代理到真实设备?(linux创建虚拟ip)
- Linux内核模块 – 打开创build的字符设备导致一个错误
- 为什么 FirebaseAnalytics 看不到真实设备?
- 使用Azure命令行工具为Linux创build虚拟机
- 使用C ++在Linux中创build计时器队列
如何在Linux中创build虚拟io设备,将数据代理到真实设备?(linux创建虚拟ip)
我有一个有趣的问题。 我正在开发一个带有多个在Linux处理器上运行的Linux实例的embedded式框。 它们通过内部1GBpsnetworking连接。 我有一个连接到处理器A的串行端口设备节点(可以说Linux-A在其上运行)。 我有一个运行在处理器B上的程序(假设在Linux-B上)访问串行端口设备,就好像在本地连接到Linux-B一样。
我的程序调用设备节点上的I / Otypesapi调用来控制tty回显,字符模式input。 我想知道的是,如果有一种方法可以创build一个在Linux-B上可用的虚拟串行设备,但是通过内部networking与Linux-A上的实际串行设备交谈。
我在想:Linux-B有/ dev / ttyvirtual。 任何写入它的东西都会通过networking套接字传输到Linux-A串行服务器。 串口服务器把实际设备上的api调用放到/ dev / ttys0里。 任何等待ttys0的数据都会被传回到/ dev / ttyvirtual。
为了快速完成这项工作,所有涉及到的事情是什么?
谢谢
Videoguy
如何从蓝牙端口读取串行数据? C ++
在线程中select()系统调用?
如果Device :: SerialPort上有数据,则用Perltesting
在SerialCommunication C ++中使用Mutex时遇到multithreading问题
使用perl将AT命令发送到调制解调器
更新:我在http://fixunix.com/bsd/261068-network-socket-serial-port-question.html上find了一个很好的指点。
另一个有用的链接是http://blog.philippklaus.de/2011/08/make-rs232-serial-devices-accessible-via-ethernet/
在PPP连接期间与调制解调器聊天
stdin和stdout在C程序中的redirect
XPembedded式启动时,串行端口计数器会点击
在Windows上列出串行(COM)端口?
拨号Windows串行调制解调器从PHP
看看openpty(3) 。 这可以让你创建一个伪TTY(就像/dev/pts/0 ,ssh连接使用的那种类型),它会以普通TTY的方式响应,但是可以直接对连接进行编程控制。
这样你就可以托管一个在网络连接之间转发数据的串口设备(例如/dev/pts/5 ),然后其他应用程序就可以在不知道底层网桥的情况下对其进行串行操作。
我结束了使用socat
例子可以在这里找到: socat的例子
你在这两台机器上背靠背。 一个侦听一个TCP端口,并将数据转发到本地虚拟端口或pty。 其他机箱上的socat使用真实设备作为输入,并将任何数据转发到TCP端口。
Linux内核模块 – 打开创build的字符设备导致一个错误
我刚开始阅读Ldd3,试图实现一个简单的模块,或多或less地遵循书中的例子。 模块向内核添加了自定义的fops(空函数)的字符设备。 模块加载没有问题,但是当我尝试打开设备时,进程被杀死,dmesg打印出debugging信息。 我的内核是4.8.0。 X86-64。 这是我的代码
#include <linux/init.h> #include <linux/module.h> #include <linux/types.h> // for dev_t #include <linux/kdev_t.h> // for MAJOR,MInor macros etc.. #include <linux/fs.h> // for alloc_chrdev_region etc .. #include <linux/cdev.h> // to register char devic MODULE_LICENSE("Dual BSD/GPL"); dev_t hello_num; struct cdev *my_cdev; loff_t hello_llseek(struct file *filepo,loff_t offset,int a){ return 0; } int hello_open(struct inode *inode,struct file *flip){ printk(KERN_ALERT "you opened this device"); return 0; } ssize_t hello_read(struct file *filep,char __user *ptr,size_t sizee,loff_t *gela){ return 0; } ssize_t hello_write(struct file *filep,const char __user *ptr,loff_t *gela){ return 0; } int hello_release(struct inode *inode,struct file *filep){ return 0; } static int hello_init(void) { int cdev_add_return = 999; //DEBUG struct file_operations hello_fops = { .owner = THIS_MODULE,.llseek = hello_llseek,.read = hello_read,.write = hello_write,.open = hello_open,.release = hello_release,}; alloc_chrdev_region(&hello_num,3,"hello"); my_cdev = cdev_alloc(); if(my_cdev == 0){ printk(KERN_DEBUG "my_cdev is NULL"); } printk(KERN_DEBUG "mc_cdev address: %p",my_cdev); // DEBUG my_cdev->ops = &hello_fops; if((cdev_add_return = cdev_add(my_cdev,hello_num,3)) != 0){ printk(KERN_DEBUG "cdev_add errrored n"); } printk(KERN_DEBUG "cdev_add returned: %d",cdev_add_return); // DEBUG printk(KERN_INFO "Hello World: major num: %ld n",(long) MAJOR(hello_num)); return 0; } static void hello_exit(void) { cdev_del(my_cdev); unregister_chrdev_region(hello_num,3); printk(KERN_INFO "Goodbyen"); } module_init(hello_init); module_exit(hello_exit);
这里是debugging信息:
[ 3504.756954] mc_cdev address: ffff8800340ed280 [ 3504.756967] cdev_add returned: 0 [ 3504.756975] Hello World: major num: 245 [ 3512.356621] BUG: unable to handle kernel paging request at ffffffff810b3d1d [ 3512.359676] IP: [<ffffffff811029f1>] try_module_get+0x41/0x110 [ 3512.359676] PGD 1809067 PUD 180a063 PMD 10001e1 [ 3512.359676] Oops: 0003 [#2] PREEMPT SMP [ 3512.359676] Modules linked in: hello(O) joydev mousedev arc4 ath9k ath9k_common ath9k_hw ath snd_hda_codec_realtek input_leds psmouse mac_hid uvcvideo mac80211 snd_hda_codec_generic evdev serio_raw iTCO_wdt atkbd iTCO_vendor_support libps2 videobuf2_vmalloc videobuf2_memops videobuf2_v4l2 videobuf2_core asus_wmi snd_hda_intel videodev snd_hda_codec media i915 coretemp lpc_ich i2c_i801 pcspkr i2c_smbus i8042 drm_kms_helper atl1c cfg80211 snd_hda_core drm sparse_keymap wmi led_class rfkill serio snd_hwdep snd_pcm syscopyarea thermal sysfillrect snd_timer fjes sysimgblt ac fb_sys_fops shpchp snd intel_agp intel_gtt battery i2c_algo_bit soundcore video button acpi_cpufreq tpm_tis tpm_tis_core tpm squashfs loop sch_fq_codel ip_tables x_tables ext4 crc16 jbd2 mbcache uas usb_storage sd_mod uhci_hcd ahci [ 3512.359676] libahci libata scsi_mod ehci_pci ehci_hcd usbcore usb_common [last unloaded: hello] [ 3512.359676] cpu: 1 PID: 2438 Comm: checkout Tainted: GrdO 4.8.0-ARCH #1 [ 3512.359676] Hardware name: ASUSTeK Computer INC. 1005P/1005P,BIOS 0706 01/04/2010 [ 3512.359676] task: ffff880034035b00 task.stack: ffff8800341a8000 [ 3512.359676] RIP: 0010:[<ffffffff811029f1>] [<ffffffff811029f1>] try_module_get+0x41/0x110 [ 3512.359676] RSP: 0018:ffff8800341abc30 EFLAGS: 00010206 [ 3512.359676] RAX: 0000000048000009 RBX: ffff8800340ed280 RCX: 0000000048000009 [ 3512.359676] RDX: 000000004800000a RSI: ffffffff810b3d1d RDI: ffffffff810b39e5 [ 3512.359676] RBP: ffff8800341abc48 R08: 0000000000000000 R09: 0000000000000000 [ 3512.359676] R10: 0000000000000000 R11: ffff88002d65df38 R12: ffff880034064320 [ 3512.469705] R13: ffff88003834f600 R14: ffff8800340ed280 R15: 0000000000000000 [ 3512.469705] FS: 00007f5bd10a9400(0000) GS:ffff88003f500000(0000) knlGS:0000000000000000 [ 3512.469705] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 3512.469705] CR2: ffffffff810b3d1d CR3: 000000003d315000 CR4: 00000000000006e0 [ 3512.469705] Stack: [ 3512.469705] ffff8800340ed280 ffff880034064320 ffff88003834f600 ffff8800341abc98 [ 3512.469705] ffffffff8120c99d ffff880034064320 0000000000008000 0000000064a8303a [ 3512.469705] ffff88003834f600 ffff8800341afcc0 ffff880034064320 0000000000000000 [ 3512.469705] Call Trace: [ 3512.469705] [<ffffffff8120c99d>] chrdev_open+0x7d/0x1e0 [ 3512.469705] [<ffffffff812052c5>] do_dentry_open+0x205/0x2e0 [ 3512.469705] [<ffffffff8120c920>] ? cdev_put+0x30/0x30 [ 3512.469705] [<ffffffff8120637c>] vfs_open+0x4c/0x70 [ 3512.469705] [<ffffffff81213fbb>] ? may_open+0x9b/0x100 [ 3512.469705] [<ffffffff81216332>] path_openat+0x282/0x1170 [ 3512.469705] [<ffffffff811f32b9>] ? unlock_page_memcg+0x29/0x60 [ 3512.469705] [<ffffffff811bdbcb>] ? page_add_file_rmap+0x5b/0x140 [ 3512.469705] [<ffffffff81176de3>] ? filemap_map_pages+0x233/0x410 [ 3512.469705] [<ffffffff812183f1>] do_filp_open+0x91/0x100 [ 3512.469705] [<ffffffff81226129>] ? __alloc_fd+0xc9/0x180 [ 3512.469705] [<ffffffff812067a7>] do_sys_open+0x147/0x210 [ 3512.469705] [<ffffffff8120688e>] SyS_open+0x1e/0x20 [ 3512.469705] [<ffffffff815f7072>] entry_SYSCALL_64_fastpath+0x1a/0xa4 [ 3512.469705] Code: 53 65 ff 05 c2 a8 f0 7e 83 3f 02 0f 84 bd 00 00 00 8b 8f 38 03 00 00 85 c9 0f 84 af 00 00 00 8d 51 01 48 8d b7 38 03 00 00 89 c8 <f0> 0f b1 97 38 03 00 00 39 c8 89 c2 75 7e 4c 8b 6d 08 0f 1f 44 [ 3512.469705] RIP [<ffffffff811029f1>] try_module_get+0x41/0x110 [ 3512.469705] RSP <ffff8800341abc30> [ 3512.469705] CR2: ffffffff810b3d1d [ 3512.469705] ---[ end trace c8094481edecca95 ]---
Makefile文件:
obj-m += hello.o all: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules clean: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
我手动创build设备节点。 任何人都可以指出问题在哪里? 提前致谢
在Windows通用应用程序中发送电子邮件
检测使用C#更改的活动窗口而不进行轮询
面向Linux的Visual C ++开发
如何构build我的Linux c ++应用程序以链接到旧版本的libc?
如何在Windows 2008窗口中通过C#安装IIS
编辑etc hosts文件
在C中列出所有的function/符号?
如何运行一个C程序,并使用Twisted Python获取程序的输出
C#在运行时或更早时间设置stream程描述
`libusb_attach_kernel_driver`不工作
你的结构文件操作是在本地声明的函数 。 所以,当hello_init完成时,指向该结构的指针不再有效。
当你打开字符设备时,内核试图查看那个结构,但是它不可访问。
常见的实践是静态地声明文件操作的结构:
static struct file_operations hello_fops = {...};
总结
以上是小编为你收集整理的Linux内核模块 – 打开创build的字符设备导致一个错误全部内容。
如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。
为什么 FirebaseAnalytics 看不到真实设备?
如何解决为什么 FirebaseAnalytics 看不到真实设备??
我需要将 Firebase 重新连接到一个新项目,我按照说明完成了所有操作。包正确,替换文件,连接库
dependencies
implementation ''com.google.firebase:firebase-analytics-ktx:18.0.2''
apply plugin: ''com.google.gms.google-services''
classpath ''com.google.gms:google-services:4.3.5''
google()
在MainActivity中,我也连接了所有东西,好像没有什么需要了。
private lateinit var firebaseAnalytics: FirebaseAnalytics
firebaseAnalytics = Firebase.analytics
问题在于 FirebaseAnalytics 可以看到模拟器,但看不到真实设备,而不是我正在测试的设备,而不是来自用户的设备。不在调试中,不在发布模式下。你能告诉我可能是什么原因吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
使用Azure命令行工具为Linux创build虚拟机
试图使用Linux的Azure命令行工具,
下面是我试图创build一个虚拟机时的屏幕输出。
path.existsSync现在被称为fs.existsSync 。 info:执行命令vm create +查找图像
+查找云服务
+创build云服务
+检索存储帐户
tty.setRawMode:改为使用process.stdin.setRawMode() 。 inputVM'cliusername'密码:
在这个阶段,我input了密码,然后回车,但没有发生什么事情。还有什么信息“tty.setRawMode:Use process.stdin.setRawMode() instead。” 这是显示在屏幕上。Plz的帮助!
提取文件unix的多行
写入tmp文件夹
在bash中删除长度小于2的单词
命令如果粘贴在命令提示符下工作,但从batch file运行时不起作用
从命令行调用emacsclientw的问题
唯一的,持久的networking设备信息
testingWindows应用程序的运行状况
batch file创build多个文件夹和子文件夹
从生成文件运行可执行文件
如何从shell命令获取pppd inet地址
在与各个团队讨论后,我们发现这个问题与node.js v0.8兼容性问题有关。
看来您正在运行最新的节点版本,使用以下命令安装的azure工具与最新的节点v0.8不兼容:
npm install azure --global
修正是在DEV分支https://github.com/WindowsAzure/azure-sdk-for-node/不在MASTER中。 从npm存储库提供的包不会更新。
暂时你可以从开发分支创建包,为此:
从https://github.com/WindowsAzure/azure-sdk-for-node/tree/dev下载zip文件
解压并从命令提示符切换到提取的目录
通过运行命令创建包(注意:这将生成文件azure-0.6.1.tgz):
npm包
运行以下命令来安装此软件包:
npm install azure-0.6.1.tgz –global
这应该可以解决你的问题。
使用C ++在Linux中创build计时器队列
我已经在Windows使用C++实现了一个项目,它创build了一个定时器队列,向它添加条目,当定时器到期时执行callback函数,等待下一个定时器等等。可以使用Windows函数CreateTimer , CreateTimerQueueTimer , CreateTimer等。
现在我的问题是如何在Linux使用C++做同样的事情? 有一些API吗? timer_create是一个很好的select吗? 如果还提供了一个示例,这将是非常有帮助的。
谢谢。
Linux,timerfd的准确性
高精度的事件计时器
程序终止,如果我使用scanf
如何检测Windows系统是否支持唤醒定时器
WaitableTimer可变周期
我怎样才能在Win32平台上的C实现时间驱动的任务?
如何在WinXP下获得精确的1ms定时器刻度
带有timerfd的epoll
时钟在Windows 7中如何工作?
系统运行时是否有延时计时器?
你不能为此使用libevent吗?
关于如何在Linux中创build虚拟io设备,将数据代理到真实设备?和linux创建虚拟ip的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于Linux内核模块 – 打开创build的字符设备导致一个错误、为什么 FirebaseAnalytics 看不到真实设备?、使用Azure命令行工具为Linux创build虚拟机、使用C ++在Linux中创build计时器队列等相关知识的信息别忘了在本站进行查找喔。
本文标签: