Skip to main content
  • Home
  • Development
  • Documentation
  • Donate
  • Operational login
  • Browse the archive

swh logo
SoftwareHeritage
Software
Heritage
Archive
Features
  • Search

  • Downloads

  • Save code now

  • Add forge now

  • Help

  • 7e636a7
  • /
  • tools
  • /
  • firewire
  • /
  • nosy-dump.h
Raw File Download
Permalinks

To reference or cite the objects present in the Software Heritage archive, permalinks based on SoftWare Hash IDentifiers (SWHIDs) must be used.
Select below a type of object currently browsed in order to display its associated SWHID and permalink.

  • content
  • directory
content badge Iframe embedding
swh:1:cnt:69e5e594f28491ae428caf1a4c0f9b68c32776d8
directory badge Iframe embedding
swh:1:dir:33beddab14f1a20e921fc0b181d352253a7c57a0
Citations

This interface enables to generate software citations, provided that the root directory of browsed objects contains a citation.cff or codemeta.json file.
Select below a type of object currently browsed in order to generate citations for them.

  • content
  • directory
Generate software citation in BibTex format (requires biblatex-software package)
Generating citation ...
Generate software citation in BibTex format (requires biblatex-software package)
Generating citation ...
nosy-dump.h
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __nosy_dump_h__
#define __nosy_dump_h__

#define array_length(array) (sizeof(array) / sizeof(array[0]))

#define ACK_NO_ACK   0x0
#define ACK_DONE(a)  ((a >> 2) == 0)
#define ACK_BUSY(a)  ((a >> 2) == 1)
#define ACK_ERROR(a) ((a >> 2) == 3)

#include <stdint.h>

struct phy_packet {
	uint32_t timestamp;
	union {
		struct {
			uint32_t zero:24;
			uint32_t phy_id:6;
			uint32_t identifier:2;
		} common, link_on;

		struct {
			uint32_t zero:16;
			uint32_t gap_count:6;
			uint32_t set_gap_count:1;
			uint32_t set_root:1;
			uint32_t root_id:6;
			uint32_t identifier:2;
		} phy_config;

		struct {
			uint32_t more_packets:1;
			uint32_t initiated_reset:1;
			uint32_t port2:2;
			uint32_t port1:2;
			uint32_t port0:2;
			uint32_t power_class:3;
			uint32_t contender:1;
			uint32_t phy_delay:2;
			uint32_t phy_speed:2;
			uint32_t gap_count:6;
			uint32_t link_active:1;
			uint32_t extended:1;
			uint32_t phy_id:6;
			uint32_t identifier:2;
		} self_id;

		struct {
			uint32_t more_packets:1;
			uint32_t reserved1:1;
			uint32_t porth:2;
			uint32_t portg:2;
			uint32_t portf:2;
			uint32_t porte:2;
			uint32_t portd:2;
			uint32_t portc:2;
			uint32_t portb:2;
			uint32_t porta:2;
			uint32_t reserved0:2;
			uint32_t sequence:3;
			uint32_t extended:1;
			uint32_t phy_id:6;
			uint32_t identifier:2;
		} ext_self_id;
	};
	uint32_t inverted;
	uint32_t ack;
};

#define TCODE_PHY_PACKET 0x10

#define PHY_PACKET_CONFIGURATION 0x00
#define PHY_PACKET_LINK_ON 0x01
#define PHY_PACKET_SELF_ID 0x02

struct link_packet {
	uint32_t timestamp;
	union {
		struct {
			uint32_t priority:4;
			uint32_t tcode:4;
			uint32_t rt:2;
			uint32_t tlabel:6;
			uint32_t destination:16;

			uint32_t offset_high:16;
			uint32_t source:16;

			uint32_t offset_low;
		} common;

		struct {
			uint32_t common[3];
			uint32_t crc;
		} read_quadlet;

		struct {
			uint32_t common[3];
			uint32_t data;
			uint32_t crc;
		} read_quadlet_response;

		struct {
			uint32_t common[3];
			uint32_t extended_tcode:16;
			uint32_t data_length:16;
			uint32_t crc;
		} read_block;

		struct {
			uint32_t common[3];
			uint32_t extended_tcode:16;
			uint32_t data_length:16;
			uint32_t crc;
			uint32_t data[0];
			/* crc and ack follows. */
		} read_block_response;

		struct {
			uint32_t common[3];
			uint32_t data;
			uint32_t crc;
		} write_quadlet;

		struct {
			uint32_t common[3];
			uint32_t extended_tcode:16;
			uint32_t data_length:16;
			uint32_t crc;
			uint32_t data[0];
			/* crc and ack follows. */
		} write_block;

		struct {
			uint32_t common[3];
			uint32_t crc;
		} write_response;

		struct {
			uint32_t common[3];
			uint32_t data;
			uint32_t crc;
		} cycle_start;

		struct {
			uint32_t sy:4;
			uint32_t tcode:4;
			uint32_t channel:6;
			uint32_t tag:2;
			uint32_t data_length:16;

			uint32_t crc;
		} iso_data;
	};
};

struct subaction {
	uint32_t ack;
	size_t length;
	struct list link;
	struct link_packet packet;
};

struct link_transaction {
	int request_node, response_node, tlabel;
	struct subaction *request, *response;
	struct list request_list, response_list;
	struct list link;
};

int decode_fcp(struct link_transaction *t);

#endif /* __nosy_dump_h__ */

Software Heritage — Copyright (C) 2015–2025, The Software Heritage developers. License: GNU AGPLv3+.
The source code of Software Heritage itself is available on our development forge.
The source code files archived by Software Heritage are available under their own copyright and licenses.
Terms of use: Archive access, API— Contact— JavaScript license information— Web API

back to top