Conformance statement

This section is based on the conformation statement made for the certification.

Supported features

The required features below are supported for all system configurations.

Macro Name Meaning
_POSIX_NO_TRUNC Pathname components longer than NAME_MAX generate an error.

Optional features

BlackBerry 10 OS doesn't implement the following optional features:

  • _POSIX_TRACE
  • _POSIX_TRACE_EVENT_LOG
  • _POSIX_TRACE_LOG
  • POSIX 1003.26-2003
  • POSIX.5c Interfaces (Ada Language Option)

BlackBerry 10 OS supports the following POSIX.1 options and POSIX.13 units of functionality not mandated by the PSE52 Realtime Controller 1003.13-2003 System Product Standard:

  • _POSIX_ASYNCHRONOUS_IO
  • _POSIX_BARRIERS
  • _POSIX_CHOWN_RESTRICTED
  • _POSIX_IPV6
  • _POSIX_MEMORY_PROTECTION
  • _POSIX_PRIORITIZED_IO
  • _POSIX_RAW_SOCKETS
  • _POSIX_SAVED_IDS
  • _POSIX_SPORADIC_SERVER
  • _POSIX_THREAD_PROCESS_SHARED
  • _POSIX_TYPED_MEMORY_OBJECTS
  • POSIX_C_LANG_WIDE_CHAR
  • POSIX_DEVICE_SPECIFIC
  • POSIX_EVENT_MGMT
  • POSIX_FIFO
  • POSIX_FILE_ATTRIBUTES
  • POSIX_FILE_SYSTEM_EXT
  • POSIX_JOB_CONTROL
  • POSIX_MULTI_PROCESS
  • POSIX_NETWORKING
  • POSIX_PIPE
  • POSIX_REGEXP
  • POSIX_RW_LOCKS
  • POSIX_SHELL_FUNCS
  • POSIX_SIGNAL_JUMP
  • POSIX_STRING_MATCHING
  • POSIX_SYMBOLIC_LINKS
  • POSIX_SYSTEM_DATABASE
  • POSIX_USER_GROUPS
  • POSIX_WIDE_CHAR_IO
  • XSI_C_LANG_SUPPORT
  • XSI_DEVICE_IO
  • XSI_DYNAMIC_LINKING
  • XSI_FD_MGMT
  • XSI_FILE_SYSTEM
  • XSI_JOB_CONTROL
  • XSI_JUMP
  • XSI_MULTI_PROCESS
  • XSI_SINGLE_PROCESS
  • XSI_SYSTEM_DATABASE
  • XSI_SYSTEM_LOGGING
  • XSI_TIMERS

Float, standard I/O, and limit values

The values associated with the constants specified in <float.h> are as follows:

Macro Name Meaning Value
FLT_RADIX Radix of the exponent representation. 2
FLT_MANT_DIG Number of base-FLT_RADIX digits in the float significand. 24
DBL_MANT_DIG Number of base-FLT_RADIX digits in the double significand. 53
LDBL_MANT_DIG Number of base-FLT_RADIX digits in the long double significand. 64
FLT_DIG Number of decimal digits, q, such that any floating-point number with q digits can be rounded into a float representation and back again without change to the q digits. 6
DBL_DIG Number of decimal digits, q, such that any floating-point number with q digits can be rounded into a double representation and back again without change to the q digits. 15
LDBL_DIG Number of decimal digits, q, such that any floating-point number with q digits can be rounded into a long double representation and back again without change to the q digits. 18
FLT_MIN_EXP Minimum negative integer such that FLT_RADIX raised to that power minus 1 is a normalised float. -125
DBL_MIN_EXP Minimum negative integer such that FLT_RADIX raised to that power minus 1 is a normalised double. -1021
LDBL_MIN_EXP Minimum negative integer such that FLT_RADIX raised to that power minus 1 is a normalised long double. -16381
FLT_MIN_10_EXP Minimum negative integer such that 10 raised to that power is in the range of normalised floats. -37
DBL_MIN_10_EXP Minimum negative integer such that 10 raised to that power is in the range of normalised doubles. -307
LDBL_MIN_10_EXP Minimum negative integer such that 10 raised to that power is in the range of normalised long doubles. -4931
FLT_MAX_EXP Maximum integer such that FLT_RADIX raised to that power minus 1 is a representable finite float. 128
DBL_MAX_EXP Maximum integer such that FLT_RADIX raised to that power minus 1 is a representable finite double. 1024
LDBL_MAX_EXP Maximum integer such that FLT_RADIX raised to that power minus 1 is a representable finite long double. 16384
FLT_MAX_10_EXP Maximum integer such that 10 raised to that power is in the range of representable finite floats. 38
DBL_MAX_10_EXP Maximum integer such that 10 raised to that power is in the range of representable finite doubles. 308
LDBL_MAX_10_EXP Maximum integer such that 10 raised to that power is in the range of representable finite long doubles. 4932
FLT_MAX Maximum representable finite float. 3.40282347e+38
DBL_MAX Maximum representable finite double. 1.7976931348623157e308
LDBL_MAX Maximum representable finite long double. 1.189731495357231765e+4932
FLT_EPSILON Difference between 1.0 and the least value greater than 1.0 that is representable as a float. 1.1920929e-07
DBL_EPSILON Difference between 1.0 and the least value greater than 1.0 that is representable as a double. 2.2204460492503131e-16
LDBL_EPSILON Difference between 1.0 and the least value greater than 1.0 that is representable as a long double. 1.084202172485504434e-19
FLT_MIN Minimum normalised positive float. 1.17549435e-38
DBL_MIN Minimum normalised positive double. 2.2250738585072014e-308
LDBL_MIN Minimum normalised positive long double. 3.362103143112093506e-4932

The values associated with the following constants (optionally specified in <limits.h> are as follows:

Macro Name Meaning Minimum Maximum
DELAYTIMER_MAX Maximum number of timer expiration overruns. 1048576 1048576
FILESIZEBITS Minimum number of bits needed to represent as a signed integer value the maximum size of a regular file. 32 64
LINK_MAX Maximum number of links to a single file. 1 2147483647
NAME_MAX Maximum number of bytes in a filename (not including the terminating null). 91 255
OPEN_MAX Maximum number of open files that one process can have open at any one time. 100 65534
PAGESIZE Size of a page in bytes. 4096 4096
PATH_MAX Maximum number of bytes in a pathname (including the terminating null). 255 1024
PTHREAD_DESTRUCTOR_ITERATIONS Maximum number of attempts made to destroy a thread's thread-specific data values when a thread exits. 4 4
PTHREAD_KEYS_MAX Maximum number of data keys that can be created by a process. 128 128
PTHREAD_STACK_MIN Minimum size in bytes of thread stack storage. 256 256
PTHREAD_THREADS_MAX Maximum number of threads that can be created per process. 65534 65534
RTSIG_MAX Maximum number of realtime signals reserved for application use in this implementation. 16 16
SEM_NSEMS_MAX Maximum number of semaphores that a process may have. Unlimited Unlimited
SEM_VALUE_MAX The maximum value a semaphore may have. 1073741823 1073741823
SIGQUEUE_MAX Maximum number of queued signals that a process may send and have pending at the receiver(s) at any time. Unlimited Unlimited
SS_REPL_MAX The maximum number of replenishment operations that may be simultaneously pending for a particular sporadic server scheduler. 65535 65535
STREAM_MAX Number of streams that one process can have open at one time. Unlimited Unlimited
TIMER_MAX Maximum number of timers per process supported by the implementation. 65534 65534
TRACE_EVENT_NAME_MAX Maximum length of the trace event name. Not supported Not supported
TRACE_NAME_MAX Maximum length of the trace generation version string or of the trace stream name. Not supported Not supported
TRACE_SYS_MAX Maximum number of trace streams that may simultaneously exist in the system. Not supported Not supported
TRACE_USER_EVENT_MAX Maximum number of user trace event type identifiers that may simultaneously exist in a traced process, including the predefined user trace event POSIX_TRACE_UNNAMED_USER_EVENT. Not supported Not supported
TZNAME_MAX Maximum number of bytes supported for the name of a time zone. 30 30

The values associated with the following numerical constants specified in the <limits.h> header file are as follows:

Macro Name Meaning Value
CHAR_MAX Maximum value of a char. 127
INT_MAX Maximum value of an int. 2147483647
LONG_MAX Maximum value of a long int. 2147483647
LLONG_MAX Maximum value of a long long. 9223372036854775807
SHRT_MAX Maximum value of a short. 32767
SSIZE_MAX Maximum value of an object of type ssize_t. 2147483647
UINT_MAX Maximum value of an unsigned int. 4294967295
ULONG_MAX Maximum value of an unsigned long int. 4294967295
ULLONG_MAX Maximum value of a unigsned long long. 18446744073709551615
USHRT_MAX Maximum value of an unsigned short int. 65535

The values associated with the numerical constants specified in the <stdio.h> header file are as follows:

Macro Name Meaning Value
FILENAME_MAX Maximum size in bytes of the longest filename string that the implementation guarantees can be opened. 255
FOPEN_MAX Number of streams which the implementation guarantees can be open simultaneously. 16
L_tmpnam Maximum size of character array to hold tmpnam() output. 255
TMP_MAX Minimum number of unique filenames generated by tmpnam(), which is the maximum number of times an application can call tmpnam() reliably. 17576

Error conditions

The following table indicates which optional errors, (denoted by may fail within the specification), listed in the System interfaces volume are detected in the circumstances specified:

Function Error Detected
access() EINVAL Yes
  ENAMETOOLONG Yes
  ETXTBSY No
chdir() ENAMETOOLONG Yes
  ELOOP Yes
clock_settime() EPERM Yes
close() EIO Yes
closedir() EBADF Yes
  EINTR Yes
erfc(), erfcf(), erfcl() Range Error Yes
exp(), expf(), expl() Range Error Yes
exp2(), exp2f(), exp2l() Range Error Yes
expm1(), expm1f() Range Error Yes
fchdir() EINTR Yes
  EIO No
fclose() ENXIO No
fcntl() EDEADLK Yes
fdim(), fdimf(), fdiml() Range Error Yes
fdopen() EBADF No
  EINVAL Yes
  EMFILE No
  ENOMEM Yes
fflush() ENXIO Yes
fgetc() ENOMEM No
  ENXIO Yes
fgetpos() EBADF Yes
  ESPIPE Yes
fgetwc() ENOMEM No
  ENXIO Yes
fileno() EBADF No
fmod(), fmodf(), fmodl() Range Error Yes
fopen() EINVAL Yes
  ELOOP Yes
  EMFILE Yes
  ENAMETOOLONG Yes
  ENOMEN Yes
  ETXTBSY Yes
fpathconf() EBADF Yes
  EINVAL Yes
fputc() ENOMEM No
  ENXIO Yes
fread() ENOMEM No
  ENXIO Yes
freopen() EINVAL Yes
  ELOOP Yes
  ENAMETOOLONG Yes
  ENOMEM Yes
  ENXIO Yes
  ETXTBSY Yes
fscanf() ENOMEM No
  ENXIO Yes
fstat() EOVERFLOW Yes
ftell() ESPIPE Yes
getcwd() EACCES Yes
  ENOMEM Yes
ldexp(), ldexpf(), ldexpl() Range Error Yes
link() ELOOP Yes
  ENAMETOOLONG Yes
mkdir() ELOOP Yes
  ENAMETOOLONG Yes
mktime() EOVERFLOW No
mlock() EINVAL Yes
  ENOMEM Yes
munlock() EINVAL Yes
mlockall() ENOMEM Yes
  ENOPERM Yes
open() EAGAIN No
  EINVAL Yes
  ELOOP Yes
  ENAMETOOLONG Yes
  ETXTBSY Yes
opendir() ELOOP Yes
  EMFILE Yes
  ENAMETOOLONG Yes
  ENFILE Yes
pathconf() EACCES Yes
  EINVAL Yes
  ELOOP Yes
  ENAMETOOLONG Yes
  ENOENT Yes
  ENOTDIR Yes
posix_trace_*() Not supported Not supported
pow(), powf(), powl() Range Error Yes
pthread_attr_destroy() EINVAL No
pthread_attr_init() EBUSY No
pthread_attr_getdetachstate() EINVAL No
pthread_attr_setdetachstate() EINVAL No
pthread_attr_getguardsize() EINVAL No
pthread_attr_setguardsize() EINVAL No
pthread_attr_getinheritsched() EINVAL No
pthread_attr_setinheritsched() EINVAL No
  ENOSUP No
pthread_attr_getschedparam() EINVAL No
pthread_attr_setschedparam() EINVAL No
  ENOSUP No
pthread_attr_getschedpolicy() EINVAL No
pthread_attr_setschedpolicy() EINVAL No
  ENOSUP No
pthread_attr_getscope() EINVAL No
pthread_attr_setscope() EINVAL Yes
  ENOSUP Yes
pthread_attr_getstack() EINVAL No
pthread_attr_setstack() EINVAL No
  EBUSY No
pthread_attr_getstackaddr() EINVAL No
pthread_attr_setstackaddr() EINVAL No
pthread_attr_getstacksize() EINVAL No
pthread_attr_setstacksize() EINVAL No
pthread_cancel() ESRCH Yes
pthread_cond_broadcast() EINVAL Yes
pthread_cond_signal() EINVAL Yes
pthread_cond_destroy() EBUSY Yes
  EINVAL Yes
pthread_cond_init() EBUSY Yes
  EINVAL Yes
pthread_cond_timedwait() EINVAL Yes
  EPERM Yes
pthread_cond_wait() EINVAL Yes
  EPERM Yes
pthread_condattr_destroy() EINVAL No
pthread_condattr_getclock() EINVAL No
pthread_condattr_setclock() EINVAL No
pthread_condattr_getpshared() EINVAL No
pthread_condattr_setpshared() EINVAL No
pthread_create() EINVAL Yes
pthread_detach() EINVAL Yes
  ESRCH Yes
pthread_getcpuclockid() ESRCH Yes
pthread_getschedparam() ESRCH Yes
pthread_setschedparam() EINVAL Yes
  ENOTSUP Yes
  EPERM Yes
  ESRCH Yes
pthread_setspecific() ESRCH No
pthread_join() EDEADLK Yes
  EINVAL Yes
pthread_key_delete() EINVAL Yes
pthread_mutex_destroy() EBUSY Yes
  EINVAL Yes
pthread_mutex_init() EBUSY Yes
  EINVAL Yes
pthread_mutex_lock() EINVAL Yes
  EDEADLK Yes
pthread_mutex_trylock() EINVAL Yes
pthread_mutex_unlock() EINVAL Yes
  EPERM Yes
pthread_mutex_timedlock() EINVAL Yes
  EDEADLK Yes
pthread_mutexattr_destroy() EINVAL No
pthread_mutexattr_getprioceiling() EINVAL No
  EPERM No
pthread_mutexattr_setprioceiling() EINVAL Yes
  EPERM No
pthread_mutexattr_getprotocol() EINVAL No
  EPERM No
pthread_mutexattr_setprotocol() EINVAL Yes
  EPERM No
pthread_mutexattr_getpshared() EINVAL No
pthread_mutexattr_setpshared() EINVAL No
pthread_mutexattr_gettype() EINVAL No
pthread_mutexattr_settype() EINVAL Yes
pthread_once() EINVAL No
pthread_setcancelstate() EINVAL Yes
pthread_setcanceltype() EINVAL Yes
pthread_schedprio() EINVAL Yes
  ENOTSUP No
  EPERM Yes
  ESRCH Yes
putc() ENOMEM No
  ENXIO Yes
putchar() ENOMEM No
  ENXIO Yes
puts() ENOMEM No
  ENXIO Yes
read() EIO Yes
  ENOBUFS Yes
  ENOMEM Yes
  ENXIO Yes
readdir() EBADF Yes
  ENOENT No
remove() EBUSY No
  ELOOP Yes
  ENAMETOOLONG Yes
  ETXTBSY No
rename() ELOOP Yes
  ENAMETOOLONG Yes
  ETXTBSY No
rmdir() ELOOP Yes
  ENAMETOOLONG Yes
sem_close() EINVAL Yes
sem_destroy() EINVAL Yes
  EBUSY Yes
sem_getvalue() EINVAL Yes
sem_post() EINVAL Yes
sem_timedwait() EDEADLK No
  EINTR Yes
  EINVAL Yes
sem_trywait() EDEADLK No
  EINTR Yes
  EINVAL Yes
sem_wait() EDEADLK No
  EINTR Yes
  EINVAL Yes
setvbuf() EBADF No
sigaction() EINVAL Yes
sigaddset() EINVAL Yes
sigdelset() EINVAL Yes
sigismember() EINVAL Yes
signal() EINVAL Yes
sigtimedwait() EINVAL Yes
sigwait() EINVAL No
sigwaitinfo() EINVAL No
stat() ELOOP Yes
  ENAMETOOLONG Yes
  EOVERFLOW Yes
strcoll() EINVAL No
strerror() EINVAL No
strerror_r() ERANGE Yes
strtod(), strtof(), strtold() EINVAL Yes
strtoimax() EINVAL Yes
strtol() EINVAL Yes
strtoul() EINVAL Yes
strtoumax() EINVAL Yes
strxfrm() EINVAL No
timer_delete() EINVAL Yes
timer_getoverrun() EINVAL Yes
timer_gettime() EINVAL Yes
timer_settime() EINVAL Yes
tmpfile() EMFILE Yes
  ENOMEM Yes
unlink() ELOOP Yes
  ENAMETOOLONG Yes
  ETXTBSY No
utime() ELOOP Yes
  ENAMETOOLONG Yes
vfscanf() EILSEQ Yes
  EINVAL No
  ENOMEM No
  ENXIO Yes
write() ENETDOWN Yes
  ENETUNREACH Yes
  ENXIO Yes

Mathematical interfaces

Most implementations support IEEE floating-point format either in hardware or software. Some implementations support other formats with different exponent and mantissa accuracy. BlackBerry 10 OS supports IEEE 754 in hardware. The fegetexceptflag(), feraiseexcept(), fesetexecptflag(), and fetestexecptflag() functions support the following floating-point exceptions:

  • FE_DIVBYZERO
  • FE_INEXACT
  • FE_INVALID
  • FE_OVERFLOW
  • FE_UNDERFLOW

The fegetround() and fesetround() functions support the following floating-point rounding directions:

  • FE_DOWNWARD
  • FE_TONEAREST
  • FE_TOWARDZERO
  • FE_UPWARD

BlackBerry 10 OS supports a non-stop floating-point exception mode.

File handling

Access control
BlackBerry 10 OS provides standard access control.
Files and directories
BlackBerry 10 OS doesn't implement any additional or alternate file access control mechanisms that could cause fstat() or stat() to fail.

Internationalized system interfaces

Coded character sets
BlackBerry 10 OS supports the following coded character sets:
  • ISO 8859-1:1987
  • ISO 10646-1:2000

The underlying internal codeset is ISO 8859-1:1987.

Threads: Cancellation points

POSIX specifies a list of functions that must have cancellation points that occur when a thread is executing, and another of functions that may have cancellation points. The functions listed below are those that POSIX says may have cancellation points and do in the BlackBerry 10 OS implementation:

For a list of all the functions (including non-POSIX ones) that are cancellation points, see the Full Safety Information appendix in the BlackBerry 10 OS C Library Reference.

Realtime: prioritized I/O

The BlackBerry 10 OS supports _POSIX_PRIORITIZED_IO on regular files.

Realtime threads

Scheduling policies
The scheduling policy associated with SCHED_OTHER is SCHED_RR.
Scheduling contention scope
BlackBerry 10 OS supports the PTHREAD_SCOPE_SYSTEM scheduling contention scope.
Default scheduling contention scope
The default scheduling contention scope is PTHREAD_SCOPE_SYSTEM.
Scheduling allocation domain
The mechanism to configure the system so that the scheduling allocation domain has size one, so that the binding of threads to scheduling allocation domains remains static is as follows:
  • For a multiprocessor system, the number of processors enabled is controlled by the BSP-specific startup program.
  • The -P1 command-line argument to the startup program enables only one processor, creating a scheduling allocation domain of size one.

C-language compilation environment

The BlackBerry 10 OS provides the following C-language compilation environments:

  • A C-language compilation environment with 32-bit int, long, pointer, and off_t types
  • A C-language compilation environment with 32-bit int, long, and pointer types, and an off_t type using at least 64 bits

BlackBerry 10 OS doesn't provide the following C-language compilation environments:

  • A C-language compilation environment with 32-bit int, and 64-bit long, pointer, and off_t types
  • A C-language compilation environment with int using at least 32-bits, and long, pointer, and off_t types using at least 64 bits

The Base Definitions Volume defines these four scenarios as possible C-language compilation environment offerings, but doesn't define which corresponding execution environments are supported. The BlackBerry 10 OS supports the same execution environments as it does compilation environments.

The largest type that can be stored in type off_t is long long The standard requires that off_t be able to store any value contained in type long.

Last modified: 2014-12-11



Got questions about leaving a comment? Get answers from our Disqus FAQ.

comments powered by Disqus