package module
Version: v0.1.0 Latest Latest

This package is not in the latest version of its module.

Go to latest
Published: Jul 1, 2021 License: BSD-3-Clause Imports: 3 Imported by: 0




TinyFS contains Go implementations of embedded filesystems. The packages in this module require CGo support and are TinyGo compatible.




View Source
const Version = "0.1.0"

Version returns a user-readable string showing the version of the package for support purposes. Update this value before release of new version of software.


This section is empty.


This section is empty.


type BlockDevice

type BlockDevice interface {

	// ReadAt reads the given number of bytes from the block device.

	// WriteAt writes the given number of bytes to the block device.

	// Size returns the number of bytes in this block device.
	Size() int64

	// WriteBlockSize returns the block size in which data can be written to
	// memory. It can be used by a client to optimize writes, non-aligned writes
	// should always work correctly.
	WriteBlockSize() int64

	// EraseBlockSize returns the smallest erasable area on this particular chip
	// in bytes. This is used for the block size in EraseBlocks.
	// It must be a power of two, and may be as small as 1. A typical size is 4096.
	EraseBlockSize() int64

	// EraseBlocks erases the given number of blocks. An implementation may
	// transparently coalesce ranges of blocks into larger bundles if the chip
	// supports this. The start and len parameters are in block numbers, use
	// EraseBlockSize to map addresses to blocks.
	EraseBlocks(start, len int64) error

A BlockDevice is the raw device that is meant to store a filesystem.

type File

type File interface {
	IsDir() bool
	Readdir(n int) (infos []os.FileInfo, err error)

File specifies the common behavior of the file abstraction in TinyFS; this interface may be changed or superseded by the TinyGo os.FileHandle interface if/when that is merged and standardized.

type FileHandle

type FileHandle interface {
	// Read reads up to len(b) bytes from the file.
	Read(b []byte) (n int, err error)

	// Write writes up to len(b) bytes to the file.
	Write(b []byte) (n int, err error)

	// Close closes the file, making it unusable for further writes.
	Close() (err error)

FileHandle is a copy of the experimental os.FileHandle interface in TinyGo

type Filesystem

type Filesystem interface {
	Format() error
	Mkdir(path string, _ os.FileMode) error
	Mount() error
	Open(path string) (File, error)
	OpenFile(path string, flags int) (File, error)
	Remove(path string) error
	Rename(oldPath string, newPath string) error
	Stat(path string) (os.FileInfo, error)
	Unmount() error

type MemBlockDevice

type MemBlockDevice struct {
	// contains filtered or unexported fields

MemBlockDevice is a block device implementation backed by a byte slice

func NewMemoryDevice

func NewMemoryDevice(pageSize, blockSize, blockCount int) *MemBlockDevice

func (*MemBlockDevice) EraseBlockSize

func (bd *MemBlockDevice) EraseBlockSize() int64

func (*MemBlockDevice) EraseBlocks

func (bd *MemBlockDevice) EraseBlocks(start int64, len int64) error

func (*MemBlockDevice) ReadAt

func (bd *MemBlockDevice) ReadAt(buf []byte, off int64) (n int, err error)

func (*MemBlockDevice) Size

func (bd *MemBlockDevice) Size() int64

func (*MemBlockDevice) Sync

func (bd *MemBlockDevice) Sync() error

func (*MemBlockDevice) WriteAt

func (bd *MemBlockDevice) WriteAt(buf []byte, off int64) (n int, err error)

func (*MemBlockDevice) WriteBlockSize

func (bd *MemBlockDevice) WriteBlockSize() int64

type Syncer

type Syncer interface {
	// Sync triggers the devices to commit any pending or cached operations
	Sync() error


Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
t or T : Toggle theme light dark auto
y or Y : Canonical URL