drivers/scsi/arm/acornscsi.h
Source file repositories/reference/linux-study-clean/drivers/scsi/arm/acornscsi.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/scsi/arm/acornscsi.h- Extension
.h- Size
- 9548 bytes
- Lines
- 351
- Domain
- Driver Families
- Bucket
- drivers/scsi
- Inferred role
- Driver Families: implementation source
- Status
- source 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.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
queue.hmsgqueue.h
Detected Declarations
struct status_entry
Annotated Snippet
struct status_entry {
unsigned long when;
unsigned char ssr;
unsigned char ph;
unsigned char irq;
unsigned char unused;
};
#define ADD_STATUS(_q,_ssr,_ph,_irq) \
({ \
host->status[(_q)][host->status_ptr[(_q)]].when = jiffies; \
host->status[(_q)][host->status_ptr[(_q)]].ssr = (_ssr); \
host->status[(_q)][host->status_ptr[(_q)]].ph = (_ph); \
host->status[(_q)][host->status_ptr[(_q)]].irq = (_irq); \
host->status_ptr[(_q)] = (host->status_ptr[(_q)] + 1) & (STATUS_BUFFER_SIZE - 1); \
})
/*
* AcornSCSI host specific data
*/
typedef struct acornscsi_hostdata {
/* miscellaneous */
struct Scsi_Host *host; /* host */
struct scsi_cmnd *SCpnt; /* currently processing command */
struct scsi_cmnd *origSCpnt; /* original connecting command */
void __iomem *base; /* memc base address */
void __iomem *fast; /* fast ioc base address */
/* driver information */
struct {
unsigned int irq; /* interrupt */
phase_t phase; /* current phase */
struct {
unsigned char target; /* reconnected target */
unsigned char lun; /* reconnected lun */
unsigned char tag; /* reconnected tag */
} reconnected;
struct scsi_pointer SCp; /* current commands data pointer */
MsgQueue_t msgs;
unsigned short last_message; /* last message to be sent */
unsigned char disconnectable:1; /* this command can be disconnected */
} scsi;
/* statistics information */
struct {
unsigned int queues;
unsigned int removes;
unsigned int fins;
unsigned int reads;
unsigned int writes;
unsigned int miscs;
unsigned int disconnects;
unsigned int aborts;
unsigned int resets;
} stats;
/* queue handling */
struct {
Queue_t issue; /* issue queue */
Queue_t disconnected; /* disconnected command queue */
} queues;
/* per-device info */
struct {
unsigned char sync_xfer; /* synchronous transfer (SBIC value) */
syncxfer_t sync_state; /* sync xfer negotiation state */
unsigned char disconnect_ok:1; /* device can disconnect */
} device[8];
unsigned long busyluns[64 / sizeof(unsigned long)];/* array of bits indicating LUNs busy */
/* DMA info */
struct {
unsigned int free_addr; /* next free address */
unsigned int start_addr; /* start address of current transfer */
dmadir_t direction; /* dma direction */
unsigned int transferred; /* number of bytes transferred */
unsigned int xfer_start; /* scheduled DMA transfer start */
unsigned int xfer_length; /* scheduled DMA transfer length */
char *xfer_ptr; /* pointer to area */
unsigned char xfer_required:1; /* set if we need to transfer something */
unsigned char xfer_setup:1; /* set if DMA is setup */
unsigned char xfer_done:1; /* set if DMA reached end of BH list */
} dma;
/* card info */
struct {
Annotation
- Immediate include surface: `queue.h`, `msgqueue.h`.
- Detected declarations: `struct status_entry`.
- Atlas domain: Driver Families / drivers/scsi.
- Implementation status: source implementation candidate.
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.