I am writing a custom device driver for a USB device which is quite old. The driver is written on the basis on Sample code given by Apple for IOKit. I am able to do communication to the device and I have written the IOUserClient for application space as well.
I am having issue with retrieving data from the buffer to the IOUserClient from the Kernel space. The way this works is that I send a READ command to the device and in turn the device takes time to fill up the read buffer which is notified in the completionhandler. I am using IOCommandGate for the communication. The read function on the IOUserClient should ideally wait for the buffer to fill up from the device but it doesn't. I tried to add a IOLock so that IOUserClient side will wait for the buffer fill up but it waits infinitely without terminating. This might be because the commandgate only forks one thread.
Can Commandgate sleep/awake be used in this case? The Kernel panic happens when I do that. Is there another way?
I am relatively new in this area and would appreciate some direction or pointers on the same.
Issue retrieving buffer from the device on a custom device driver in MacOS
37 Views Asked by user2101977 At
0
There are 0 best solutions below
Related Questions in MACOS
- Error installing Nativescript on Mac M2 Sonoma 14.4.1
- macOS - Most secure way of a GUI SUDO_ASKPASS
- When using onDrag in SwiftUI on Mac how can I detect when the dragged object has been released anywhere?
- Why does Hugo generate different taxonomy-related HTML on different OS's?
- ZSH function parameters conundrum
- how to make read only file/directory in Mac writable
- macOS BigSur - Unable to run bundled php version or brew php 8
- 9 Digit Addresses in Hexadecimal System in MacOS
- MacOS Bash-Script: while read p and echo
- How to make a range for tail rows on a categorized table in Numbers with JXA scripts?
- Cannot build a basic project with curl on Mac (M2) for Raspberry Pi Pico
- How to recover deleted files from create vite react project
- Can't run built SFML project from Xcode template
- React Native - RealmJS - Linker command failed with exit code 1
- How can I manually add a keyboard shortcut to a Shortcut Action Service directly via the system files, without going through the System Prefs GUI?
Related Questions in DEVICE-DRIVER
- How to allocate 500MB+ physically contiguous memory in a Linux kernel module and copy data to that memory from a userspace process?
- How to enable Swap APO in SYSVAD sample driver without enhancement tab in windows 11?
- Issue retrieving buffer from the device on a custom device driver in MacOS
- A bus error that occurs when mmap memory is used with memcpy
- Create Dummy CPU Performance counter register for Unit Testing of Driver
- I am trying to emulate a board which has a OLED display, but can't see anything. Can you tell me if there is something important I am not considering?
- Error code 0xC1 when trying to create a file mapping
- Do POSIX writes block until the DMA device has finished writing data?
- How does the operating system handle I/O writes, that are not a multiple of the block device's sector-size?
- How to wait for Callback response in C++ on Windows
- How do you debug a bootloader video driver on an ARM (Rockchip RK3588) computing machine?
- Why is the VOP (Video Output Processor) on the Rockchip RK3588 acting inaccessible?
- Linux TTY Operation sequence
- Unable to see any /sys/devices/xx interface created from kernel module loaded through k_vendor_module.rc
- How to natively build Windows 11 device drivers for ARM64 on an ARM64 system?
Related Questions in IOKIT
- OSX kext: Can't open IOResouces in ::start() due to owned by some other
- IOKit: Not receiving HID interrupt reports from DualShock 4 controller connected with Bluetooth
- IOServiceOpen returns kIOReturnUnsupported despite driver's user client instantiation
- HID Device Interface in macOS
- I wanna debug mac driver on a different machine, but I can't create symbol file. It alway fail, can anyone have an idea?
- Reading audio from a usb synth
- Get callback using IOKit using an Interrupt Input Endpoint
- Which KPI Library Is IODeviceMemory Declared In?
- How to import IOPMLib.h from IO kit?
- Listing all connected iDevices in Cocoa
- Acessing a serial to USB device with I/O kit
- How can i delete a file using vnode?
- Unable to find symbol links for IOKit kext
- How to map memory in DriverKit using IOMemoryDescriptor::CreateMapping?
- DriverKit - Access to hub for SuspendDevice() equivalent
Related Questions in KERNEL-EXTENSION
- Is it possible to develop a Transparent Data Encryption(TDE) system on macOS now?
- How to directly access physical addresses or convert to virtual address on macOS for Apple silicon?
- Issue retrieving buffer from the device on a custom device driver in MacOS
- lldb - attach to target Mac over ethernet after a kernel panic
- Unloading a kext after macOS 11 Big Sur
- How to delete potential malware files in sbin/bin system directory on Mac M1?
- Is it feasible to write a macOS kernel-extension for Ventura?
- How to store kext parameters between runs?
- How to register a key in the IORegistry and react to its change in the kext?
- Unable to load kext "Authenticating extension failed"
- MacOS kext panic “Request address is greater than 32 bits”
- (SQLITE3/KEXT) Want to revoke my MacOS trust on installer, so it prompts me again about allowing what I previously allowed (and don't want to now)
- "Failed to bind" while loading a kernel extension on macOS 13 Ventura
- How can we open a hard drive using kernel extension in Mac OSx?
- Where we can find log file of KEXTs in Mac OS?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?