Programming :: Vmsplice And Splice Usage In User Space?
Jun 10, 2009
I'm using vmsplice & splice to send memory buffers through a TCP socket. I have two issues using these methods:
1) According to the documentation, when using vmsplice with the flag SPLICE_F_GIFT, you cannot modify the buffer you've "given" the kernel. Currently, each time I want to send a buffer, I have to allocate a page-aligned buffer (fill it with data) and send it using vmsplice- splice. When can I deallocate this buffer? Is it possible to modify this buffer after the buffer is sent through the socket?
2) The buffer should be page-aligned both in memory and in length, but most of the time the sent messages (to the TCP socket) - are smaller than a page size - is it possible to "clear" the pipe from the remaining buffer?
I want to get the disk space usage of each user on the machine. I Have found the command -du but how can I consultate the usage per user? The only thing I can is to consultate the usage of maps...
I am developing a I2C CDROM client driver. The CDROM firmware supports TOC information read through a I2C command. It sends the TOC information in burst ( Interrupts a GPIO pin when it is ready ) and my CPU does a I2C read to read the TOC. When the CDROM firmware finishes sending the last data burst , it informs my CPU that it is done with the TOC, by a flag in the last data burst. I would like to know, which is the most efficinet way I can send these TOC information to userspace?
I wanna write a file in kernel space but from my searching I can to know that instead of writeing file in kernel space ,I can write data to user space by copy_to_user space.
But link is missing ...I dont know how will my user space will access kernel space means my function in kernel space which will do copy_to_user /....How my user space function will call my kernel level function ..
Can any one of you provide me with some example file which are doing this .I know every char driver is using it ...but i could not trace back how user level function is accessing it ...i m confused between user space and kernel space.
I have the following requirement in my module. The driver gets some data from the external device. After getting 1MB of data it has to send it to the user space application. What is the best thing to implement for this in driver.? Is it ok to implement like, after getting data, the driver will send a signal to the user space application. Then the user space application sends an ioctl to read the data. Is there any alternate, that the driver directly sends the data without the user space application asks for it.?
I'm running into a problem where my system is running out of disk space on the root partition, but I can't figure out where the runaway usage is. I've had a stable system for a couple of years now, and it just ran out of space. I cleaned some files up to get the system workable again, but can't find the big usage area, and I'm getting conflicting results.For example, when I do a df it says I'm using 44GB out of 58 GB:
Code: [root@Zion ~]# df -h Filesystem Size Used Avail Use% Mounted on
Logical Memory Space of 4GB is divided in to 3GB User Space and 1GB Kernel Space. Always. Correct?
1. How can we change it? (just changing value of PAGE_OFFSET is okay?)
2. If system have only 256MB of memory (embedded system) and suppose Kernel Modules eat away all the memory during boot. User space will be left will no memory. Is this case possible?
I have written a device driver and I would like to disable an interrupt. In kernel space there is a function called "disable_irq(int irq)", but, is it possible to do it from user space?
I am looking for a way to issue ioctls to a usb driver from user space. Upon googling, I found that usbfs provides a way to do that, anyhow I can't find sample code to try that out.
Note: I have written a sample usb driver on the lines of 'Linux device drivers' book. Now I need to try ioctls with usb drivers.
I am writing a program which i dont want the kernel scheduler to preempt before certain time duration. I am using the system call sched_get_priority_max to set the maximum priority. However it is not producing results.
I want to simulate a serial protocol in user space program to test reception algorithm. The protocol is similar to UART protocol but frame format is different. The duration of 1 bit is 114,46 us. In my main function I'm creating two threads. Tx for simulating transmitting data and Rx for reception data. For measure time I use create_timer() function and signals. Each thread has its own timer and signal handler. Tx timer uses SIGUSR1 and Rx timer uses SIGUSR2. Tx thread sets the global variable and Rx reads it.
The timers are set to sample with 114,46 us period. When they reach this value signal handler should set the flag. Flag is check in thread and some operation are made. When I set the timers period for longer time (100 ms) everything works fine but when I change it to default value (114,46 us) the Rx thread doesn't receive the proper data. I am wondering if the 114,46 timer period is possible to simulate in user space? Whether the time will give me the proper resolution ? Theoretically it should provide 1 ns resolution.
I am writing device driver in which i have to call callback function from kernel space, which are saving my data. But the callback functions are in userspace. While accessing them i am getting segmentation fault.
In a 32-bit system, max memory addressable is 4GB. Now Linux kernel does memory mapping division of 1GB for kernel address space and 3GB for user address space. That means 4GB of virtual address space is divided between kernel (1GB) and user (3GB).
Q1. All virtual mapping utilizes the available physical RAM without any division? I mean to say that if RAM is 512MB then a page in kernel space can lie any where RAM (leave aside old PCI dma accesses)? (How this fits to fact that kernel memory is non-pageble)
Q2. If a process is created in user space, it has visibility 4GB address space or 3GB address space?
Just picked up a 64g M4 SSD, bit small I know but wanted to have a play and try the SSD thing out. I am chasing partitioning suggestions. Problem is, you guessed it, space. As always with SSD's, space is at a premium. Formatted I am apparently going to end up with about 58gig usable. A disk usage analysis of my current Fedora 14 install on a 7200rpm drive gives me 30g of files in home, and about 15g to root.
Of that 30g of home files, 8g is tied up in Thunderbird alone, so was going to allocate about 45 to /home; and about 3g to swap. Problem is / (root) I have 8 gig tied up in /usr, and another 5 gig tied up in /var. Is this normal? Can I delete some of those files or will a fresh install of Fedora 15 blow out eventually to fill all that. I know I am trapped with /usr on the SSD but can I move /var to a 7200rpm instead of chocking up my teeny weeny ssd? What have other people partitioned their SSD's as?
How can i limit disk space usage for one user? Like.. User john123, you can only use 100mb of my harddisk. User jake155, you can only use 250mb of my harddisk.
For some reason, if I leave my Linux box running for several days, the swap space and RAM slowly fill up until my system is so slow that it takes around 15 seconds just to open a new tab if Firefox (Iceweasel, specifically). I have 512GB RAM and almost a gig of swap; how on earth does it fill up so much? Even if I close all my programs, there's still over 600MB swap used and all RAM is full. I've included a screenshot of 'top' running just about two minutes after I closed all my running programs.
(Before I closed it, I had only 71MB swap free.) I know that Linux is supposed to make good usage of RAM, but isn't this over the top? Is there a way to force it to use only required memory with no or little extras kept in RAM? Just thought I'd add in the fact that I'm running Xfce as opposed to KDE or GNOME in an attempt to have a smoother running system on my old hardware. Also, what's the "VIRT" column?
I have a few '.flv's now and most are small enough to upload to my Joomla web site and play with AllVideos (extension) but a few are over the 10M limit, I have one that is actually 50M! Is there something I can use to either splice the videos (make 2 or 3 out of one, upload seperately) or to compress down to 10M- w/o wrecking the quality?
well I went to wubi-installer, and installed Ubuntu, and I love it, I don't want to go back to windows 7, but anyways, I set Ubuntu to my D: Drive, (200GB Space) and I installed Steam (Steampowered.com) to get my games on Ubuntu. I installed all of my games, but here is a big problem, I can't figure out how to use more than 30GB on Ubuntu, it just doesn't work. I got GParted, and the D: drive is set to 195 GB (200, but Ubuntu used 5GB)
On one of my servers the "free" command tells me that a lot of swap space are in use. What I'd like to do is to determine which processes have been swapped out. I tried issuing "top" and sort by the "swap" column, but this doesn't seem to provide correct values - when performing the same excersize on another server with close to no pages swapped out, the sum when adding the swap value for each process greatly exceeds the swap usage reported by "free". So how do I go about determining the swap space used for individual processes?
Some thing is using up a huge amount of my disk space about 10G and I can not determine what it is. When I look at my disk usage in system monitor it say I have used about 25G and when I scan the directory in disk usage analyzer the entire file system used is 15G.
i am programming to get a real number to show real-time system bandwidth used ? that mean the bandwidth used at the time my fuction running? am using C language to do that. so help me please!
Im a fresher in PHP.Actually i wanted to know that whether there will be time delay while using session variables in PHP.By using some 10-20 session variables in my code will it affect the speed of the loading of the page.If so then can u suuggest any other method to pass the varaibles which will not slow down the speed?