Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 3 Dec 2017 12:13:16 -0500
From:      Lee D <embaudarm@gmail.com>
To:        freebsd-hackers@freebsd.org
Subject:   How do I make my device driver respond to lseek?
Message-ID:  <CANC_bnNWfk3-QgwCEiRhMyjmQOBH%2Bt%2BXxW8zFp%2B=943nRWvJ4g@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
Hi,

I've been trying to figure out how to make my device driver respond to
lseek(). There doesn't seem to be an appropriate entry in the cdevsw
structure (in src/sys/sys/conf.h).

Obviously I can make an ioctl() call for this (and I have, in the
interim), but I'd like to do it it the right way.

I have a feeling like I am misunderstanding some critical abstraction
layer...  But at some point the device driver must be told what
position to start reading from/writing to, right?

FWIW, this is a device driver interface to a SPI flash in my custom
ARM embedded system. I need to be able to locate to a point in the
flash to read and write my app config info, without disturbing my boot
loader.

I want to be able to write code like this:

    int fd = open ("/dev/my_spi_flash0", O_RDWR);
    lseek(fd, 0x10000, SEEK_SET);
    write(fd, buf, 100);
    close(fd);

Does anyone know the proper way to implement lseek?



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CANC_bnNWfk3-QgwCEiRhMyjmQOBH%2Bt%2BXxW8zFp%2B=943nRWvJ4g>