include/linux/firewire.h

Source file repositories/reference/linux-study-clean/include/linux/firewire.h

File Facts

System
Linux kernel
Corpus path
include/linux/firewire.h
Extension
.h
Size
19667 bytes
Lines
626
Domain
Core OS
Bucket
Core Kernel Interface
Inferred role
Core OS: operation-table or driver-model contract
Status
pattern implementation candidate

Why This File Exists

Core operating-system implementation surface: boot, tasks, memory, VFS, syscall-facing interfaces, synchronization, credentials, and isolation.

Dependency Surface

Detected Declarations

Annotated Snippet

extern const struct bus_type fw_bus_type;

struct fw_card_driver;
struct fw_node;

struct fw_card {
	const struct fw_card_driver *driver;
	struct device *device;
	struct kref kref;
	struct completion done;

	int node_id;
	int generation;
	u64 reset_jiffies;

	struct {
		int current_tlabel;
		u64 tlabel_mask;
		struct list_head list;
		spinlock_t lock;
	} transactions;

	struct {
		u32 hi;
		u32 lo;
		unsigned int cycles;
		unsigned int jiffies;
		spinlock_t lock;
	} split_timeout;

	unsigned long long guid;
	unsigned max_receive;
	int link_speed;
	int config_rom_generation;

	spinlock_t lock;

	struct fw_node *local_node;
	struct fw_node *root_node;
	struct fw_node *irm_node;
	u8 color; /* must be u8 to match the definition in struct fw_node */
	int gap_count;
	bool beta_repeaters_present;

	int index;
	struct list_head link;

	struct delayed_work br_work; /* bus reset job */
	bool br_short;

	struct delayed_work bm_work; /* bus manager job */
	int bm_retries;
	int bm_generation;
	int bm_node_id;
	bool bm_abdicate;

	bool priority_budget_implemented;	/* controller feature */
	bool broadcast_channel_auto_allocated;	/* controller feature */

	bool broadcast_channel_allocated;
	u32 broadcast_channel;

	struct {
		__be32 buffer[(CSR_TOPOLOGY_MAP_END - CSR_TOPOLOGY_MAP) / 4];
		spinlock_t lock;
	} topology_map;

	__be32 maint_utility_register;

	struct workqueue_struct *isoc_wq;
	struct workqueue_struct *async_wq;
};

static inline struct fw_card *fw_card_get(struct fw_card *card)
{
	kref_get(&card->kref);

	return card;
}

void fw_card_release(struct kref *kref);

static inline void fw_card_put(struct fw_card *card)
{
	kref_put(&card->kref, fw_card_release);
}

int fw_card_read_cycle_time(struct fw_card *card, u32 *cycle_time);

struct fw_attribute_group {

Annotation

Implementation Notes