8. Language-Specific Services for the C Programming Language Manager — RTEMS POSIX API Guide 5.4-rc2 (21st August 2026) documentation

# 8. Language-Specific Services for the C Programming Language Manager

## 8.1. Introduction

The language-specific services for the C programming language manager is …

The directives provided by the language-specific services for the C programming language manager are:

- setlocale - Set the Current Locale

- fileno - Obtain File Descriptor Number for this File

- fdopen - Associate Stream with File Descriptor

- flockfile - Acquire Ownership of File Stream

- ftrylockfile - Poll to Acquire Ownership of File Stream

- funlockfile - Release Ownership of File Stream

- getc_unlocked - Get Character without Locking

- getchar_unlocked - Get Character from stdin without Locking

- putc_unlocked - Put Character without Locking

- putchar_unlocked - Put Character to stdin without Locking

- setjmp - Save Context for Non-Local Goto

- longjmp - Non-Local Jump to a Saved Context

- sigsetjmp - Save Context with Signal Status for Non-Local Goto

- siglongjmp - Non-Local Jump with Signal Status to a Saved Context

- tzset - Initialize Time Conversion Information

- strtok_r - Reentrant Extract Token from String

- asctime_r - Reentrant struct tm to ASCII Time Conversion

- ctime_r - Reentrant time_t to ASCII Time Conversion

- gmtime_r - Reentrant UTC Time Conversion

- localtime_r - Reentrant Local Time Conversion

- rand_r - Reentrant Random Number Generation

## 8.2. Background

There is currently no text in this section.

## 8.3. Operations

There is currently no text in this section.

## 8.4. Directives

This section details the language-specific services for the C programming language manager’s directives. A subsection is dedicated to each of this manager’s directives and describes the calling sequence, related constants, usage, and status codes.

### 8.4.1. setlocale - Set the Current Locale

CALLING SEQUENCE:

    #include <locale.h>
    char *setlocale(int category, const char *locale);

STATUS CODES:

`E` | The

DESCRIPTION:

NOTES:

### 8.4.2. fileno - Obtain File Descriptor Number for this File

CALLING SEQUENCE:

    #include <stdio.h>
    int fileno(FILE *stream);

STATUS CODES:

`E` | The

DESCRIPTION:

NOTES:

### 8.4.3. fdopen - Associate Stream with File Descriptor

CALLING SEQUENCE:

    #include <stdio.h>
    FILE *fdopen(int fildes, const char *mode);

STATUS CODES:

`E` | The

DESCRIPTION:

NOTES:

### 8.4.4. flockfile - Acquire Ownership of File Stream

CALLING SEQUENCE:

    #include <stdio.h>
    void flockfile(FILE *file);

STATUS CODES:

`E` | The

DESCRIPTION:

NOTES:

### 8.4.5. ftrylockfile - Poll to Acquire Ownership of File Stream

CALLING SEQUENCE:

    #include <stdio.h>
    int ftrylockfile(FILE *file);

STATUS CODES:

`E` | The

DESCRIPTION:

NOTES:

### 8.4.6. funlockfile - Release Ownership of File Stream

CALLING SEQUENCE:

    #include <stdio.h>
    void funlockfile(FILE *file);

STATUS CODES:

`E` | The

DESCRIPTION:

NOTES:

### 8.4.7. getc_unlocked - Get Character without Locking

CALLING SEQUENCE:

    #include <stdio.h>
    int getc_unlocked(FILE *stream);

STATUS CODES:

`E` | The

DESCRIPTION:

NOTES:

### 8.4.8. getchar_unlocked - Get Character from stdin without Locking

CALLING SEQUENCE:

    #include <stdio.h>
    int getchar_unlocked(void);

STATUS CODES:

`E` | The

DESCRIPTION:

NOTES:

### 8.4.9. putc_unlocked - Put Character without Locking

CALLING SEQUENCE:

    #include <stdio.h>
    int putc_unlocked(int c, FILE *stream);

STATUS CODES:

`E` | The

DESCRIPTION:

NOTES:

### 8.4.10. putchar_unlocked - Put Character to stdin without Locking

CALLING SEQUENCE:

    #include <stdio.h>
    int putchar_unlocked(int c);

STATUS CODES:

`E` | The

DESCRIPTION:

NOTES:

### 8.4.11. setjmp - Save Context for Non-Local Goto

CALLING SEQUENCE:

    #include <setjmp.h>
    int setjmp(jmp_buf env);

STATUS CODES:

`E` | The

DESCRIPTION:

NOTES:

### 8.4.12. longjmp - Non-Local Jump to a Saved Context

CALLING SEQUENCE:

    #include <setjmp.h>
    void longjmp(jmp_buf env, int val);

STATUS CODES:

`E` | The

DESCRIPTION:

NOTES:

### 8.4.13. sigsetjmp - Save Context with Signal Status for Non-Local Goto

CALLING SEQUENCE:

    #include <setjmp.h>
    int sigsetjmp(sigjmp_buf env, int savemask);

STATUS CODES:

`E` | The

DESCRIPTION:

NOTES:

### 8.4.14. siglongjmp - Non-Local Jump with Signal Status to a Saved Context

CALLING SEQUENCE:

    #include <setjmp.h>
    void siglongjmp(sigjmp_buf env, int val);

STATUS CODES:

`E` | The

DESCRIPTION:

NOTES:

### 8.4.15. tzset - Initialize Time Conversion Information

CALLING SEQUENCE:

    #include <time.h>
    extern int daylight;
    extern long timezone;
    extern char *tzname[2];
    void tzset(void);

STATUS CODES:

`E` | The

DESCRIPTION:

NOTES:

### 8.4.16. strtok_r - Reentrant Extract Token from String

CALLING SEQUENCE:

    #include <string.h>
    char *strtok_r(char *restrict s, const char *restrict sep,
    char **restrict state);

STATUS CODES:

`E` | The

DESCRIPTION:

NOTES:

### 8.4.17. asctime_r - Reentrant struct tm to ASCII Time Conversion

CALLING SEQUENCE:

    #include <time.h>
    char *asctime_r(const struct tm *restrict tm, char *restrict buf);

STATUS CODES:

`E` | The

DESCRIPTION:

NOTES:

### 8.4.18. ctime_r - Reentrant time_t to ASCII Time Conversion

CALLING SEQUENCE:

    #include <time.h>
    char *ctime_r(const time_t *clock, char *buf);

STATUS CODES:

`E` | The

DESCRIPTION:

NOTES:

### 8.4.19. gmtime_r - Reentrant UTC Time Conversion

CALLING SEQUENCE:

    #include <time.h>
    struct tm *gmtime_r(const time_t *restrict timer,
    struct tm *restrict result);

STATUS CODES:

`E` | The

DESCRIPTION:

NOTES:

### 8.4.20. localtime_r - Reentrant Local Time Conversion

CALLING SEQUENCE:

    #include <time.h>
    struct tm *localtime_r(const time_t *restrict timer,
    struct tm *restrict result);

STATUS CODES:

`E` | The

DESCRIPTION:

NOTES:

### 8.4.21. rand_r - Reentrant Random Number Generation

CALLING SEQUENCE:

    #include <stdlib.h>
    int rand_r(unsigned *seed);

STATUS CODES:

`E` | The

DESCRIPTION:

NOTES: