MentOS  0.8.0
The Mentoring Operating System
Classes | Macros | Typedefs | Enumerations | Functions | Variables
Advanced Technology Attachment (ATA)

Drivers for the Advanced Technology Attachment (ATA) devices. More...

Classes

struct  ata_identity_t
 IDENTIFY device data (response to 0xEC). More...
 
struct  prdt_t
 Physical Region Descriptor Table (PRDT) entry. More...
 
struct  ata_device_t
 Stores information about an ATA device. More...
 

Macros

#define __DEBUG_HEADER__   "[ATA ]"
 Change header.
 
#define __DEBUG_LEVEL__   LOGLEVEL_NOTICE
 Set log level.
 
#define ATA_SECTOR_SIZE   512
 The sector size.
 
#define ATA_DMA_SIZE   512
 The size of the DMA area.
 

Typedefs

typedef struct ata_identity_t ata_identity_t
 IDENTIFY device data (response to 0xEC).
 
typedef struct prdt_t prdt_t
 Physical Region Descriptor Table (PRDT) entry. More...
 
typedef struct ata_device_t ata_device_t
 Stores information about an ATA device.
 

Enumerations

enum  ata_error_t {
  ata_err_amnf = (1 << 0) , ata_err_tkznf = (1 << 1) , ata_err_abrt = (1 << 2) , ata_err_mcr = (1 << 3) ,
  ata_err_idnf = (1 << 4) , ata_err_mc = (1 << 5) , ata_err_unc = (1 << 6) , ata_err_bbk = (1 << 7)
}
 ATA Error Bits. More...
 
enum  ata_status_t {
  ata_status_err = (1 << 0) , ata_status_idx = (1 << 1) , ata_status_corr = (1 << 2) , ata_status_drq = (1 << 3) ,
  ata_status_srv = (1 << 4) , ata_status_df = (1 << 5) , ata_status_rdy = (1 << 6) , ata_status_bsy = (1 << 7)
}
 ATA Status Bits. More...
 
enum  ata_control_t { ata_control_zero = 0x00 , ata_control_nien = 0x02 , ata_control_srst = 0x04 , ata_control_hob = 0x80 }
 ATA Control Bits. More...
 
enum  ata_device_type_t {
  ata_dev_type_unknown , ata_dev_type_no_device , ata_dev_type_pata , ata_dev_type_sata ,
  ata_dev_type_patapi , ata_dev_type_satapi
}
 Types of ATA devices. More...
 
enum  ata_bus_mastering_command_t { ata_bm_stop_bus_master = 0x00 , ata_bm_start_bus_master = 0x01 }
 Values used to manage bus mastering. More...
 
enum  ata_dma_command_t { ata_dma_command_read = 0xC8 , ata_dma_command_read_no_retry = 0xC9 , ata_dma_command_write = 0xCA , ata_dma_command_write_no_retry = 0xCB }
 DMA specific commands. More...
 
enum  ata_identity_command_t { ata_command_pata_ident = 0xEC , ata_command_patapi_ident = 0xA1 }
 ATA identity commands. More...
 

Functions

int ata_initialize (void)
 Initializes the ATA drivers. More...
 
int ata_finalize (void)
 De-initializes the ATA drivers. More...
 
static const char * ata_get_device_error_str (uint8_t error)
 Returns the set of ATA errors as a string. More...
 
static const char * ata_get_device_status_str (uint8_t status)
 Returns the device status as a string. More...
 
static const char * ata_get_device_settings_str (ata_device_t *dev)
 Returns the device configuration as string. More...
 
static const char * ata_get_device_type_str (ata_device_type_t type)
 Returns the device type as string. More...
 
static void ata_dump_device (ata_device_t *dev)
 Dumps on debugging output the device data. More...
 
static void ata_io_wait (ata_device_t *dev)
 Waits for approximately 400 nanoseconds by performing four I/O reads. More...
 
static int ata_status_wait_not (ata_device_t *dev, long mask, long timeout)
 Waits until the status bits selected through the mask are zero. More...
 
static int ata_status_wait_for (ata_device_t *dev, long mask, long timeout)
 Waits until the status bits selected through the mask are set. More...
 
static void ata_print_status_error (ata_device_t *dev)
 Prints the status and error information about the device. More...
 
static uint64_t ata_max_offset (ata_device_t *dev)
 Ge the maximum offset for the given device. More...
 
static void ata_fix_string (char *str, size_t len)
 Fixes all ATA-related strings. More...
 
static void ata_soft_reset (ata_device_t *dev)
 Performs a soft reset of the device. More...
 
static uintptr_t ata_dma_alloc (size_t size, uintptr_t *physical)
 Creates the DMA memory area used to write and read on the device. More...
 
static int ata_dma_free (uintptr_t logical_addr)
 Frees the DMA memory area previously allocated. More...
 
static int ata_dma_enable_bus_mastering (void)
 Enables bus mastering, allowing Direct Memory Access (DMA) transactions. More...
 
static int ata_dma_disable_bus_mastering (void)
 Disables bus mastering, preventing Direct Memory Access (DMA) transactions. More...
 
static int ata_dma_initialize_bus_mastering_address (ata_device_t *dev)
 Initializes the bus mastering register (BMR) fields of the ATA device. More...
 
static ata_device_type_t ata_detect_device_type (ata_device_t *dev)
 Detects the type of device. More...
 
static bool_t ata_device_init (ata_device_t *dev)
 Initialises the given device. More...
 
static void ata_device_read_sector (ata_device_t *dev, uint32_t lba_sector, uint8_t *buffer)
 Reads an ATA sector. More...
 
static void ata_device_write_sector (ata_device_t *dev, uint32_t lba_sector, uint8_t *buffer)
 Writs an ATA sector. More...
 
static vfs_file_tata_open (const char *path, int flags, mode_t mode)
 Implements the open function for an ATA device. More...
 
static int ata_close (vfs_file_t *file)
 Closes an ATA device. More...
 
static ssize_t ata_read (vfs_file_t *file, char *buffer, off_t offset, size_t size)
 Reads from an ATA device. More...
 
static ssize_t ata_write (vfs_file_t *file, const void *buffer, off_t offset, size_t size)
 Writes on an ATA device. More...
 
static int _ata_stat (const ata_device_t *dev, stat_t *stat)
 Stats an ATA device. More...
 
static int ata_fstat (vfs_file_t *file, stat_t *stat)
 Retrieves information concerning the file at the given position. More...
 
static int ata_stat (const char *path, stat_t *stat)
 Retrieves information concerning the file at the given position. More...
 
static vfs_file_tata_mount_callback (const char *path, const char *device)
 The mount call-back, which prepares everything and calls the actual ATA mount function. More...
 
static vfs_file_tata_device_create (ata_device_t *dev)
 Creates a VFS file, starting from an ATA device. More...
 
static ata_device_type_t ata_device_detect (ata_device_t *dev)
 Detects and mount the given ATA device. More...
 
static void ata_irq_handler_master (pt_regs *f)
 
static void ata_irq_handler_slave (pt_regs *f)
 
static void pci_find_ata (uint32_t device, uint16_t vendorid, uint16_t deviceid, void *extra)
 Used while scanning the PCI interface. More...
 

Variables

static char ata_drive_char = 'a'
 Keeps track of the incremental letters for the ATA drives.
 
static int cdrom_number = 0
 Keeps track of the incremental number for removable media.
 
static uint32_t ata_pci = 0x00000000
 We store the ATA pci address here.
 
static ata_device_t ata_primary_master
 The ATA primary master control register locations. More...
 
static ata_device_t ata_primary_slave
 The ATA primary slave control register locations. More...
 
static ata_device_t ata_secondary_master
 The ATA secondary master control register locations. More...
 
static ata_device_t ata_secondary_slave
 The ATA secondary slave control register locations. More...
 
static file_system_type ata_file_system_type
 Filesystem information. More...
 
static vfs_sys_operations_t ata_sys_operations
 Filesystem general operations. More...
 
static vfs_file_operations_t ata_fs_operations
 ATA filesystem file operations. More...
 

Detailed Description

Drivers for the Advanced Technology Attachment (ATA) devices.

Typedef Documentation

◆ prdt_t

typedef struct prdt_t prdt_t

Physical Region Descriptor Table (PRDT) entry.

The physical memory region to be transferred is described by a Physical Region Descriptor (PRD). The data transfer will proceed until all regions described by the PRDs in the table have been transferred. Each Physical Region Descriptor entry is 8 bytes in length. | byte 3 | byte 2 | byte 1 | byte 0 | Dword 0 | Memory Region Physical Base Address [31:1] |0| Dword 1 | EOT | reserved | Byte Count [15:1] |0|

Enumeration Type Documentation

◆ ata_bus_mastering_command_t

Values used to manage bus mastering.

Enumerator
ata_bm_stop_bus_master 

Halts bus master operations of the controller.

ata_bm_start_bus_master 

Enables bus master operation of the controller.

◆ ata_control_t

ATA Control Bits.

Enumerator
ata_control_zero 

Always set to zero.

ata_control_nien 

Set this to stop the current device from sending interrupts.

ata_control_srst 

Set, then clear (after 5us), this to do a "Software Reset" on all ATA drives on a bus, if one is misbehaving.

ata_control_hob 

Set this to read back the High Order Byte (HOB) of the last LBA48 value sent to an IO port.

◆ ata_device_type_t

Types of ATA devices.

Enumerator
ata_dev_type_unknown 

Device type not recognized.

ata_dev_type_no_device 

No device detected.

ata_dev_type_pata 

Parallel ATA drive.

ata_dev_type_sata 

Serial ATA drive.

ata_dev_type_patapi 

Parallel ATAPI drive.

ata_dev_type_satapi 

Serial ATAPI drive.

◆ ata_dma_command_t

DMA specific commands.

Enumerator
ata_dma_command_read 

Read DMA with retries (28 bit LBA).

ata_dma_command_read_no_retry 

Read DMA without retries (28 bit LBA).

ata_dma_command_write 

Write DMA with retries (28 bit LBA).

ata_dma_command_write_no_retry 

Write DMA without retries (28 bit LBA).

◆ ata_error_t

ATA Error Bits.

Enumerator
ata_err_amnf 

Address mark not found.

ata_err_tkznf 

Track zero not found.

ata_err_abrt 

Aborted command.

ata_err_mcr 

Media change request.

ata_err_idnf 

ID not found.

ata_err_mc 

Media changed.

ata_err_unc 

Uncorrectable data error.

ata_err_bbk 

Bad Block detected.

◆ ata_identity_command_t

ATA identity commands.

Enumerator
ata_command_pata_ident 

Identify Device.

ata_command_patapi_ident 

Identify Device.

◆ ata_status_t

ATA Status Bits.

Enumerator
ata_status_err 

Indicates an error occurred.

ata_status_idx 

Index. Always set to zero.

ata_status_corr 

Corrected data. Always set to zero.

ata_status_drq 

Set when the drive has PIO data to transfer, or is ready to accept PIO data.

ata_status_srv 

Overlapped Mode Service Request.

ata_status_df 

Drive Fault Error (does not set ERR).

ata_status_rdy 

Bit is clear when drive is spun down, or after an error. Set otherwise.

ata_status_bsy 

The drive is preparing to send/receive data (wait for it to clear).

Function Documentation

◆ _ata_stat()

static int _ata_stat ( const ata_device_t dev,
stat_t stat 
)
static

Stats an ATA device.

Parameters
devthe ATA device.
statthe stat buffer.
Returns
0 on success.

◆ ata_close()

static int ata_close ( vfs_file_t file)
static

Closes an ATA device.

Parameters
filethe VFS file associated with the ATA device.
Returns
0 on success, it panics on failure.

◆ ata_detect_device_type()

static ata_device_type_t ata_detect_device_type ( ata_device_t dev)
inlinestatic

Detects the type of device.

Parameters
devThe device for which we are checking the type.
Returns
The detected device type.

◆ ata_device_create()

static vfs_file_t* ata_device_create ( ata_device_t dev)
static

Creates a VFS file, starting from an ATA device.

Parameters
devthe ATA device.
Returns
a pointer to the VFS file on success, NULL on failure.

◆ ata_device_detect()

static ata_device_type_t ata_device_detect ( ata_device_t dev)
static

Detects and mount the given ATA device.

Parameters
devthe device we want to handle.
Returns
the type of device.

◆ ata_device_init()

static bool_t ata_device_init ( ata_device_t dev)
static

Initialises the given device.

Parameters
devthe device to initialize.
Returns
0 on success, 1 on error.

◆ ata_device_read_sector()

static void ata_device_read_sector ( ata_device_t dev,
uint32_t  lba_sector,
uint8_t buffer 
)
static

Reads an ATA sector.

Parameters
devthe device on which we perform the read.
lba_sectorthe sector where we write.
bufferthe buffer we are writing.

◆ ata_device_write_sector()

static void ata_device_write_sector ( ata_device_t dev,
uint32_t  lba_sector,
uint8_t buffer 
)
static

Writs an ATA sector.

Parameters
devthe device on which we perform the write.
lba_sectorthe sector where we read.
bufferthe buffer where we store what we read.

◆ ata_dma_alloc()

static uintptr_t ata_dma_alloc ( size_t  size,
uintptr_t physical 
)
inlinestatic

Creates the DMA memory area used to write and read on the device.

Parameters
sizethe size of the DMA memory area.
physicalthe physical address of the DMA memory area.
Returns
the logical address of the DMA memory area, or 0 on failure.

◆ ata_dma_disable_bus_mastering()

static int ata_dma_disable_bus_mastering ( void  )
inlinestatic

Disables bus mastering, preventing Direct Memory Access (DMA) transactions.

This function reads the PCI command register and clears the bus mastering bit. If bus mastering is already disabled, it logs a warning.

Returns
0 on success, 1 on failure.

◆ ata_dma_enable_bus_mastering()

static int ata_dma_enable_bus_mastering ( void  )
inlinestatic

Enables bus mastering, allowing Direct Memory Access (DMA) transactions.

This function reads the PCI command register and enables bus mastering if not already enabled. It checks if the bus mastering bit is already set, and if not, sets it and verifies the change. If bus mastering cannot be enabled, it signals an error.

Returns
0 on success, 1 on failure.

◆ ata_dma_free()

static int ata_dma_free ( uintptr_t  logical_addr)
inlinestatic

Frees the DMA memory area previously allocated.

Parameters
logical_addrthe logical (low-memory) address to free.
Returns
0 on success, 1 on failure.

◆ ata_dma_initialize_bus_mastering_address()

static int ata_dma_initialize_bus_mastering_address ( ata_device_t dev)
inlinestatic

Initializes the bus mastering register (BMR) fields of the ATA device.

Parameters
devThe device to initialize.

When retrieving the actual base address of a Base Address Register (BAR), it's essential to mask the lower bits to ensure you're working with the correct address space.

  • For 16-bit Memory Space BARs, the address should be masked with 0xFFF0.
  • For 32-bit Memory Space BARs, the address should be masked with 0xFFFFFFF0.
    Returns
    0 on success, 1 on failure.

◆ ata_dump_device()

static void ata_dump_device ( ata_device_t dev)
inlinestatic

Dumps on debugging output the device data.

Parameters
devthe device to dump.

◆ ata_finalize()

int ata_finalize ( void  )

De-initializes the ATA drivers.

Returns
0 on success, 1 on error.

◆ ata_fix_string()

static void ata_fix_string ( char *  str,
size_t  len 
)
inlinestatic

Fixes all ATA-related strings.

Parameters
strstring to fix.
lenlength of the string.

◆ ata_fstat()

static int ata_fstat ( vfs_file_t file,
stat_t stat 
)
static

Retrieves information concerning the file at the given position.

Parameters
filethe file.
statthe structure where the information are stored.
Returns
0 if success.

◆ ata_get_device_error_str()

static const char* ata_get_device_error_str ( uint8_t  error)
inlinestatic

Returns the set of ATA errors as a string.

Parameters
errorthe variable containing all the error flags.
Returns
the string with the list of errors.

◆ ata_get_device_settings_str()

static const char* ata_get_device_settings_str ( ata_device_t dev)
inlinestatic

Returns the device configuration as string.

Parameters
devthe devce.
Returns
the device configuration as string.

◆ ata_get_device_status_str()

static const char* ata_get_device_status_str ( uint8_t  status)
inlinestatic

Returns the device status as a string.

Parameters
statusthe device status.
Returns
the device status as string.

◆ ata_get_device_type_str()

static const char* ata_get_device_type_str ( ata_device_type_t  type)
inlinestatic

Returns the device type as string.

Parameters
typethe device type value.
Returns
the device type as string.

◆ ata_initialize()

int ata_initialize ( void  )

Initializes the ATA drivers.

Returns
0 on success, 1 on error.

◆ ata_io_wait()

static void ata_io_wait ( ata_device_t dev)
inlinestatic

Waits for approximately 400 nanoseconds by performing four I/O reads.

Parameters
devThe device on which we wait.

◆ ata_irq_handler_master()

static void ata_irq_handler_master ( pt_regs f)
static
Parameters
fThe interrupt stack frame.

◆ ata_irq_handler_slave()

static void ata_irq_handler_slave ( pt_regs f)
static
Parameters
fThe interrupt stack frame.

◆ ata_max_offset()

static uint64_t ata_max_offset ( ata_device_t dev)
inlinestatic

Ge the maximum offset for the given device.

Parameters
dev
Returns
uint64_t

◆ ata_mount_callback()

static vfs_file_t* ata_mount_callback ( const char *  path,
const char *  device 
)
static

The mount call-back, which prepares everything and calls the actual ATA mount function.

Parameters
paththe path where the filesystem should be mounted.
devicethe device we mount.
Returns
the VFS file of the filesystem.

◆ ata_open()

static vfs_file_t* ata_open ( const char *  path,
int  flags,
mode_t  mode 
)
static

Implements the open function for an ATA device.

Parameters
paththe phat to the device we want to open.
flagswe ignore these.
modewe currently ignore this.
Returns
the VFS file associated with the device.

◆ ata_print_status_error()

static void ata_print_status_error ( ata_device_t dev)
inlinestatic

Prints the status and error information about the device.

Parameters
devthe device for which we print the information.

◆ ata_read()

static ssize_t ata_read ( vfs_file_t file,
char *  buffer,
off_t  offset,
size_t  size 
)
static

Reads from an ATA device.

Parameters
filethe VFS file associated with the ATA device.
bufferthe buffer where we store what we read.
offsetthe offset where we want to read.
sizethe size of the buffer.
Returns
the number of read characters.

◆ ata_soft_reset()

static void ata_soft_reset ( ata_device_t dev)
inlinestatic

Performs a soft reset of the device.

For non-ATAPI drives, the only method a driver has of resetting a drive after a major error is to do a "software reset" on the bus. Set bit 2 (SRST, value = 4) in the proper Control Register for the bus. This will reset both ATA devices on the bus.

Parameters
devthe device on which we perform the soft reset.

◆ ata_stat()

static int ata_stat ( const char *  path,
stat_t stat 
)
static

Retrieves information concerning the file at the given position.

Parameters
paththe path where the file resides.
statthe structure where the information are stored.
Returns
0 if success.

◆ ata_status_wait_for()

static int ata_status_wait_for ( ata_device_t dev,
long  mask,
long  timeout 
)
inlinestatic

Waits until the status bits selected through the mask are set.

Parameters
devThe device we need to wait for.
maskThe mask used to check the status bits.
timeoutThe maximum number of cycles to wait before timing out.
Returns
1 on success, 0 if it times out.

◆ ata_status_wait_not()

static int ata_status_wait_not ( ata_device_t dev,
long  mask,
long  timeout 
)
inlinestatic

Waits until the status bits selected through the mask are zero.

Parameters
devThe device we need to wait for.
maskThe mask used to check the status bits.
timeoutThe maximum number of cycles to wait before timing out.
Returns
1 on success, 0 if it times out.

◆ ata_write()

static ssize_t ata_write ( vfs_file_t file,
const void *  buffer,
off_t  offset,
size_t  size 
)
static

Writes on an ATA device.

Parameters
filethe VFS file associated with the ATA device.
bufferthe buffer we use to write.
offsetthe offset where we want to write.
sizethe size of the buffer.
Returns
the number of written characters.

◆ pci_find_ata()

static void pci_find_ata ( uint32_t  device,
uint16_t  vendorid,
uint16_t  deviceid,
void *  extra 
)
static

Used while scanning the PCI interface.

Parameters
devicethe device we want to find.
vendoridits vendor ID.
deviceidits device ID.
extrathe devoce once we find it.

Variable Documentation

◆ ata_file_system_type

file_system_type ata_file_system_type
static
Initial value:
= {
.name = "ata",
.fs_flags = 0,
}
static vfs_file_t * ata_mount_callback(const char *path, const char *device)
The mount call-back, which prepares everything and calls the actual ATA mount function.
Definition: ata.c:1466

Filesystem information.

◆ ata_fs_operations

vfs_file_operations_t ata_fs_operations
static
Initial value:
= {
.open_f = ata_open,
.unlink_f = NULL,
.close_f = ata_close,
.read_f = ata_read,
.write_f = ata_write,
.lseek_f = NULL,
.stat_f = ata_fstat,
.ioctl_f = NULL,
.getdents_f = NULL,
.readlink_f = NULL,
}
static int ata_fstat(vfs_file_t *file, stat_t *stat)
Retrieves information concerning the file at the given position.
Definition: ata.c:1441
static vfs_file_t * ata_open(const char *path, int flags, mode_t mode)
Implements the open function for an ATA device.
Definition: ata.c:1193
static ssize_t ata_read(vfs_file_t *file, char *buffer, off_t offset, size_t size)
Reads from an ATA device.
Definition: ata.c:1269
static int ata_close(vfs_file_t *file)
Closes an ATA device.
Definition: ata.c:1228
static ssize_t ata_write(vfs_file_t *file, const void *buffer, off_t offset, size_t size)
Writes on an ATA device.
Definition: ata.c:1349
#define NULL
Define NULL.
Definition: stddef.h:10

ATA filesystem file operations.

◆ ata_primary_master

ata_device_t ata_primary_master
static
Initial value:
= {
.io_base = 0x1F0,
.io_reg = {
.data = 0x1F0 + 0x00,
.error = 0x1F0 + 0x01,
.feature = 0x1F0 + 0x01,
.sector_count = 0x1F0 + 0x02,
.lba_lo = 0x1F0 + 0x03,
.lba_mid = 0x1F0 + 0x04,
.lba_hi = 0x1F0 + 0x05,
.hddevsel = 0x1F0 + 0x06,
.status = 0x1F0 + 0x07,
.command = 0x1F0 + 0x07,
},
.io_control = 0x3F6,
.primary = 1,
.secondary = 0,
.master = 1,
.slave = 0
}

The ATA primary master control register locations.

◆ ata_primary_slave

ata_device_t ata_primary_slave
static
Initial value:
= {
.io_base = 0x1F0,
.io_reg = {
.data = 0x1F0 + 0x00,
.error = 0x1F0 + 0x01,
.feature = 0x1F0 + 0x01,
.sector_count = 0x1F0 + 0x02,
.lba_lo = 0x1F0 + 0x03,
.lba_mid = 0x1F0 + 0x04,
.lba_hi = 0x1F0 + 0x05,
.hddevsel = 0x1F0 + 0x06,
.status = 0x1F0 + 0x07,
.command = 0x1F0 + 0x07,
},
.io_control = 0x3F6,
.primary = 1,
.secondary = 0,
.master = 0,
.slave = 1
}

The ATA primary slave control register locations.

◆ ata_secondary_master

ata_device_t ata_secondary_master
static
Initial value:
= {
.io_base = 0x170,
.io_reg = {
.data = 0x170 + 0x00,
.error = 0x170 + 0x01,
.feature = 0x170 + 0x01,
.sector_count = 0x170 + 0x02,
.lba_lo = 0x170 + 0x03,
.lba_mid = 0x170 + 0x04,
.lba_hi = 0x170 + 0x05,
.hddevsel = 0x170 + 0x06,
.status = 0x170 + 0x07,
.command = 0x170 + 0x07,
},
.io_control = 0x376,
.primary = 0,
.secondary = 1,
.master = 1,
.slave = 0
}

The ATA secondary master control register locations.

◆ ata_secondary_slave

ata_device_t ata_secondary_slave
static
Initial value:
= {
.io_base = 0x170,
.io_reg = {
.data = 0x170 + 0x00,
.error = 0x170 + 0x01,
.feature = 0x170 + 0x01,
.sector_count = 0x170 + 0x02,
.lba_lo = 0x170 + 0x03,
.lba_mid = 0x170 + 0x04,
.lba_hi = 0x170 + 0x05,
.hddevsel = 0x170 + 0x06,
.status = 0x170 + 0x07,
.command = 0x170 + 0x07,
},
.io_control = 0x376,
.primary = 0,
.secondary = 1,
.master = 0,
.slave = 1
}

The ATA secondary slave control register locations.

◆ ata_sys_operations

vfs_sys_operations_t ata_sys_operations
static
Initial value:
= {
.mkdir_f = NULL,
.rmdir_f = NULL,
.stat_f = ata_stat,
.creat_f = NULL,
.symlink_f = NULL,
}
static int ata_stat(const char *path, stat_t *stat)
Retrieves information concerning the file at the given position.
Definition: ata.c:1450

Filesystem general operations.