tmpfs

How to find the code segment of a Linux driver in tmpfs? (in real-time)

╄→尐↘猪︶ㄣ 提交于 2019-12-24 02:30:33
问题 I have a character driver called drv1 , and a user application uses ioctl to communicate with it, which will transmit the parameter struct file *filp . Now I want to find out the address of the code segment of drv1 , but I came across some problems. At first, I guess struct file *filp might be useful so I looked at the definition in source code, and find a pointer struct inode *f_inode; /* cached value */ . Then I roughly searched the definition of struct inode (I'm not sure whether it is

write(2)/read(2) atomicity between processes in linux

本秂侑毒 提交于 2019-12-12 12:12:53
问题 This question was migrated from Unix & Linux Stack Exchange because it can be answered on Stack Overflow. Migrated 3 years ago . I have a case where there are two processes which act on the same file - one as a writer and one as a reader. The file is a one line text file and the writer re-writes the line in a loop. reader reads the line. The pseudo code looks like this: Writer Process char buf[][18] = { "xxxxxxxxxxxxxxxx", "yyyyyyyyyyyyyyyy" }; i = 0; while (1) { pwrite(fd, buf[i], 18, 0); i

tmpfs介绍与使用

我与影子孤独终老i 提交于 2019-11-29 09:37:45
1 Tmpfs是什么 tmpfs是一种虚拟内存文件系统,而不是块设备。是基于内存的文件系统,创建时不需要使用mkfs等初始化 它最大的特点就是它的存储空间在VM(virtual memory),VM是由linux内核里面的vm子系统管理的。 linux下面VM的大小由RM(Real Memory)和swap组成,RM的大小就是物理内存的大小,而Swap的大小是由自己决定的。 Swap是通过硬盘虚拟出来的内存空间,因此它的读写速度相对RM(Real Memory)要慢许多,当一个进程申请一定数量的内存时,如内核的vm子系统发现没有足够的RM时,就会把RM里面的一些不常用的数据交换到Swap里面,如果需要重新使用这些数据再把它们从Swap交换到RM里面。如果有足够大的物理内存,可以不划分Swap分区。 VM由RM+Swap两部分组成,因此tmpfs最大的存储空间可达(The size of RM + The size of Swap)。 但是对于tmpfs本身而言,它并不知道自己使用的空间是RM还是Swap,这一切都是由内核的vm子系统管理的。 tmpfs默认的大小是RM的一半,假如你的物理内存是1024M,那么tmpfs默认的大小就是512M 一般情况下,是配置的小于物理内存大小的。 tmpfs配置的大小并不会真正的占用这块内存,如果/dev/shm/下没有任何文件