• addon functions

    From Hul Tytus@ht@panix.com to comp.arch.embedded on Tue Aug 1 21:21:44 2023
    From Newsgroup: comp.arch.embedded

    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

    --- Synchronet 3.20a-Linux NewsLink 1.114
  • From =?UTF-8?Q?Hans-Bernhard_Br=c3=b6ker?=@HBBroeker@t-online.de to comp.arch.embedded on Tue Aug 1 23:44:35 2023
    From Newsgroup: comp.arch.embedded

    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?
    --- Synchronet 3.20a-Linux NewsLink 1.114
  • From Grant Edwards@invalid@invalid.invalid to comp.arch.embedded on Tue Aug 1 22:26:58 2023
    From Newsgroup: comp.arch.embedded

    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);


    [...]
    --- Synchronet 3.20a-Linux NewsLink 1.114
  • From David Brown@david.brown@hesbynett.no to comp.arch.embedded on Wed Aug 2 18:38:08 2023
    From Newsgroup: comp.arch.embedded

    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.
    --- Synchronet 3.20a-Linux NewsLink 1.114
  • From Hul Tytus@ht@panix.com to comp.arch.embedded on Thu Aug 3 16:52:09 2023
    From Newsgroup: comp.arch.embedded

    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);


    [...]
    --- Synchronet 3.20a-Linux NewsLink 1.114