How do you interface with the Linux I2C driver from kernel space? For example, if I had LEDs connected to a GPIO expander on the I2C bus, how would I blink them twice before going down for reset from machine_reset()?
Essentially, I believe I need to call the functions i2c_smbus_write_byte(), i2c_smbus_read_byte(), etc. But these functions require I2C client data that I do not understand how to supply.
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 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.
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 am trying to build linux kernel I am getting out of space after a while. I unpacked it in /usr/src directory. It seems I have plenty of space. How much space does it need to compile & build kernel. I am using VirtualBox.
I manage to use the function "time" and "localtime" in gcc.But while I used it in a module in kernel space the above 2 functions are giving error.Even in kernel space time.h header file is not identified. tell the similar time function which can be used in kernel space
I need a shared buffer between user and kernel space. I read that one way is to allocated buffer in kernel and then call mmap from the user space. I searched for an example but couldn't find something useful. If you know, could you please send me any links or sample code that does this..
As i undertsand - out of 1GB of the virtual Address space for Kernel from 3GB to 4GB of the process address space, Kernel image (code, data, bss, stack, heap) resides staring @0x0 address. Vmalloc area starts either at the end of Physical ram size or at 896M. This 896M cap is mandated to ensure that minimum of 128MB is reserved as vmalloc_reserve for vmalloc,kmap etc.
Is the understanding correct? Now trying to map Physical Zones into this 1GB address space
Initial 16MB is mapped to ZONE_DMA 16MB - 896MB is mapped to ZONE_NORMAL 896MB - 1024MB is mapped to ZONE_HIGHMEM
Does this mean that Kernel image is residing in ZONE_DMA area? Any call to vmalloc() in kernel code will return address beyond 896M? insmod of any LKM will internally invoke vmalloc() to obtain contiguous area - where will this code physically located along with rest of kernel code in ZONE_DMA or in ZONE_HIGHMEM?
I am in verse to understand the serial communication between guest and host.I have just added a serial port through VI Client selecting "Use serial port on host"(host being ESX host).If I am on VM and run :
ll > /dev/ttyS0
I understand that it should get displayed through ESX Host. So On ESX Host, I typed:
I am writing a code which communicates between 2 processes created by fork() statement. Parent reads a file and write the data into a shared memory and sends a signal to the child. The child then receives a signal from the parent to start reading. After finishing the read operation the child sends a signal to the parent asking it to resume its action. Some things are going wrong in my code.
1. segmentation error in memcpy() statement. 2. terminal hangs after running the code. 3. Synchronization problem between processes..
I have an application which is separated to several parts (processes) communicating over TCP/IP, using a pre-defined port on localhost.Is this always safe? Can some kind of a firewall (corporate, locally installed, Windows firewall, etc) block this traffic? Or can some user settings in the OS that can block this traffic?The OSes I'm interested in are Windows (XP through 7) and Linux (Ubuntu, RHEL, SUSE)
I am very new to linux and I have been given a school project that involves getting my windows pc talking to a linux single board computer that I have. It can be found here. [URL]. I have two bluetooth usb dongles, one to plug into my pc and one to plug into my linux board, I know that both work as I have tried talking to them both using my mobile/cell phone. Also when I plug the dongle into my linux board it recognizes something has been plugged in. However I am unsure where to go from here. I have tried "searching" for the device using my windows pc, but it will only find my cell phone and not my linux board. I also tried mounting it similar to how i would mount a usb drive e.g. mount dev/sda etc. How to setup the linux board for bluetooth communications?
When I try to Sync a Palm Vx to my PC through serial port I get a communication error message in the gadget. My PalmOS Devices application is already configured to use tty0 or tty1 in unsuccessfully trials. I have a lot of information in the addresses, agenda, notes, etc. and do not want to loose that information gathered for years, nor to return to Windows.
As a test, I used a serial mouse in the serial port and It didn't work. I verified the Bios Setup and COM 1 and COM 2 are enabled.
I also checked my system serial support with the following commands:
And messages were OK when compared with typical outputs. My machine is a Pentium 4 CPU 1.6 GHz, in a U8668 motherboard (Award Software International). I have Ubuntu 10.04 LTS with Gnome.
I am new in Linux and don't know Bash yet. I had followed indications from Internet tutorials successfully, but I don't know how to proceed in this case.
Iam executing a shell script from my code and i need to "establish communication between shell script and my program(i..e.. my script iam executing and code should communicate each other while executing)" in one shot i want to implement IPC`s in shell script..! bye the way iam using system() call to run the shell script.
I was trying out the parallel port communication on RHEL 6 but found it not working: #echo hello > /dev/parport0 write error :Invalid argument". #ll > "/dev/lp0" /dev/lp0:No such device or address
I have been trying out serial and parallel data communication on Fedora 13 Beta. I can easily see the list of serial ports through:
Code: setserial -g /dev/ttyS[0-3] And can also write some data through: Code: ll > /dev/ttyS0 But I am unable to see parallel ports I can see something like: Code: /dev/parport0 But when I try out: ll > /dev/parport0 It throws error.
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?
I've about 5.5GB of free space....whenever I try to compile the kernel my system runs out of space...says zero bytes remaining maybe I din't configure it that well I cant exactly figure out which drivers/modules I need in order to obtain a working kernel.
how can I traverse a directory from Kernel space? I'm using the path_lookup function. However, through the inodes I get with this functions I can only access those files that have been displayed at some point by another process (doing ls from the terminal for example)