EmbeddedRelated.com
Forums
The 2024 Embedded Online Conference

addon functions

Started by Hul Tytus August 1, 2023
Lewin Edwards in his dosfs file system uses the ldiv() functions shown below:
	sector = ldiv(offset, SECTOR_SIZE).quot  and
	offset = ldiv(offset, SECTOR_SIZE).rem
Anybody know how this is declared or, maybe, defined?

Hul

Am 01.08.2023 um 23:21 schrieb Hul Tytus:
> Lewin Edwards in his dosfs file system uses the ldiv() functions shown below: > sector = ldiv(offset, SECTOR_SIZE).quot and > offset = ldiv(offset, SECTOR_SIZE).rem > Anybody know how this is declared or, maybe, defined?
Seriously? Does every C compiler you use come without a manual? How else could you possibly find it hard to discover the declaration and semantics of a 33+ years old C standard library function like that?
On 2023-08-01, Hul Tytus <ht@panix.com> wrote:
> Lewin Edwards in his dosfs file system uses the ldiv() functions shown below: > sector = ldiv(offset, SECTOR_SIZE).quot and > offset = ldiv(offset, SECTOR_SIZE).rem > Anybody know how this is declared or, maybe, defined?
$ man ldiv ------------------------------------------------------------------------------ div(3) Library Functions Manual div(3) NAME div, ldiv, lldiv, imaxdiv - compute quotient and remainder of an inte&#8208; ger division LIBRARY Standard C library (libc, -lc) SYNOPSIS #include <stdlib.h> div_t div(int numerator, int denominator); ldiv_t ldiv(long numerator, long denominator); lldiv_t lldiv(long long numerator, long long denominator); #include <inttypes.h> imaxdiv_t imaxdiv(intmax_t numerator, intmax_t denominator); [...]
On 01/08/2023 23:21, Hul Tytus wrote:
> Lewin Edwards in his dosfs file system uses the ldiv() functions shown below: > sector = ldiv(offset, SECTOR_SIZE).quot and > offset = ldiv(offset, SECTOR_SIZE).rem > Anybody know how this is declared or, maybe, defined? > > Hul >
It's a standard C library function. You can see its definition in the C standards (draft versions of all modern C standards are freely available online). A good reference for C is the "cppreference" site, with the exact page here being: <https://en.cppreference.com/w/c/numeric/math/div> The "div" functions are almost never used these days - any decent compiler will do as good or better when the code is expressed simply as: sector = offset / SECTOR_SIZE; offset = offset % SECTOR_SIZE; But the "div" functions made sense with older and poorer compilers.
Thanks Grant. I'd never seen those before and assumed they were Lewin's creation.

Hul

Grant Edwards <invalid@invalid.invalid> wrote:
> On 2023-08-01, Hul Tytus <ht@panix.com> wrote: > > Lewin Edwards in his dosfs file system uses the ldiv() functions shown below: > > sector = ldiv(offset, SECTOR_SIZE).quot and > > offset = ldiv(offset, SECTOR_SIZE).rem > > Anybody know how this is declared or, maybe, defined?
> $ man ldiv
> ------------------------------------------------------------------------------ > div(3) Library Functions Manual div(3)
> NAME > div, ldiv, lldiv, imaxdiv - compute quotient and remainder of an inte??? > ger division
> LIBRARY > Standard C library (libc, -lc)
> SYNOPSIS > #include <stdlib.h>
> div_t div(int numerator, int denominator); > ldiv_t ldiv(long numerator, long denominator); > lldiv_t lldiv(long long numerator, long long denominator);
> #include <inttypes.h>
> imaxdiv_t imaxdiv(intmax_t numerator, intmax_t denominator);
> [...]

The 2024 Embedded Online Conference