drivers/gpib/hp_82335/hp82335.c
Source file repositories/reference/linux-study-clean/drivers/gpib/hp_82335/hp82335.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/gpib/hp_82335/hp82335.c- Extension
.c- Size
- 10514 bytes
- Lines
- 373
- Domain
- Driver Families
- Bucket
- drivers/gpib
- Inferred role
- Driver Families: exported/initcall integration point
- Status
- integration implementation candidate
Why This File Exists
Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Exports symbols or registers init work; inspect boot/module ordering and who consumes the exported contract.
- Uses kernel synchronization; read lock ordering, sleepability, and interrupt context assumptions before translating.
- Touches IRQ or DMA behavior; this matters for the representative real-device path.
- Allocates kernel memory; connect allocation flags and lifetime to context constraints.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
hp82335.hlinux/io.hlinux/ioport.hlinux/sched.hlinux/module.hlinux/slab.hlinux/string.hlinux/init.h
Detected Declarations
function hp82335_readfunction hp82335_writefunction hp82335_commandfunction hp82335_take_controlfunction hp82335_go_to_standbyfunction hp82335_request_system_controlfunction hp82335_interface_clearfunction hp82335_remote_enablefunction hp82335_enable_eosfunction hp82335_disable_eosfunction hp82335_update_statusfunction hp82335_primary_addressfunction hp82335_secondary_addressfunction hp82335_parallel_pollfunction hp82335_parallel_poll_configurefunction hp82335_parallel_poll_responsefunction hp82335_serial_poll_responsefunction hp82335_serial_poll_statusfunction hp82335_line_statusfunction hp82335_t1_delayfunction hp82335_return_to_localfunction hp82335_allocate_privatefunction hp82335_free_privatefunction tms9914_to_hp82335_offsetfunction hp82335_read_bytefunction hp82335_write_bytefunction hp82335_clear_interruptfunction hp82335_attachfunction hp82335_detachfunction hp82335_init_modulefunction hp82335_exit_modulefunction hp82335_interruptmodule init hp82335_init_module
Annotated Snippet
module_init(hp82335_init_module);
module_exit(hp82335_exit_module);
/*
* GPIB interrupt service routines
*/
static irqreturn_t hp82335_interrupt(int irq, void *arg)
{
int status1, status2;
struct gpib_board *board = arg;
struct hp82335_priv *priv = board->private_data;
unsigned long flags;
irqreturn_t retval;
spin_lock_irqsave(&board->spinlock, flags);
status1 = read_byte(&priv->tms9914_priv, ISR0);
status2 = read_byte(&priv->tms9914_priv, ISR1);
hp82335_clear_interrupt(priv);
retval = tms9914_interrupt_have_status(board, &priv->tms9914_priv, status1, status2);
spin_unlock_irqrestore(&board->spinlock, flags);
return retval;
}
Annotation
- Immediate include surface: `hp82335.h`, `linux/io.h`, `linux/ioport.h`, `linux/sched.h`, `linux/module.h`, `linux/slab.h`, `linux/string.h`, `linux/init.h`.
- Detected declarations: `function hp82335_read`, `function hp82335_write`, `function hp82335_command`, `function hp82335_take_control`, `function hp82335_go_to_standby`, `function hp82335_request_system_control`, `function hp82335_interface_clear`, `function hp82335_remote_enable`, `function hp82335_enable_eos`, `function hp82335_disable_eos`.
- Atlas domain: Driver Families / drivers/gpib.
- Implementation status: integration implementation candidate.
- Synchronization appears in or near this file; preserve lock ordering, sleepability, and interrupt-context constraints.
- IRQ or DMA behavior appears here, which is relevant to the selected PCIe/NVMe device path.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.