memset()

Set memory to a given value

Synopsis:

#include <string.h>

void* memset( void* dst,
              int c,
              size_t length );

Arguments:

dst
A pointer to the memory that you want to set.
c
The value that you want to store in each byte.
length
The number of bytes to set.

Library:

libc

Use the -l c option to qcc to link against this library. This library is usually included automatically.

Description:

The memset() function fills length bytes starting at dst with the value c.

Note: The compiler might optimize out calls to memset if it appears that the memory isn't used again in the calling function. For a secure routine that forces the memory to be set, call memset_s().

Returns:

A pointer to the destination buffer (that is, the value of dst).

Examples:

#include <string.h>
#include <stdlib.h>
#include <stdio.h>

int main( void )
{
    char buffer[80];

    memset( buffer, '=', 80 );
    buffer[79] = '\0';
    
    puts( buffer );
    
    return EXIT_SUCCESS;
}

Environment variables:

LIBC_STRINGS
On 32-bit ARMv7 targets, you can use this environment variable to select the implementation for this function. The value is one of the following:
  • cortex_a9 — optimized for the ARM Cortex-A9 processor; assumes that no unaligned access is supported.
  • cortex_a9_aligned — optimized for ARM Cortex-A9; requires that unaligned memory access be enabled on the platform. If memory access is misaligned, this implementation falls back to the NEON version.
  • cortex_a9_neon — optimized for ARM Cortex-A9 using NEON.
  • generic — the default.
  • krait — optimized for the Qualcomm Krait CPU.
  • krait_neon — optimized for Qualcomm Krait using NEON.

Processes that register ISRs shouldn't use the NEON versions.

LD_PRELOAD
To use the implementation for this function that's optimized for ARM 64-bit architecture, you must set this environment variable. For example:
# export LD_PRELOAD=/bin/libstringsa64.so
            

Classification:

ANSI, POSIX 1003.1

Safety:  
Cancellation point No
Interrupt handler Read the Caveats
Signal handler Yes
Thread Yes

Caveats:

If you're using the implementation for this function that's optimized for ARM 64-bit architecture, it's unsafe to use it in an interrupt handler.