# Copyright (c) 2024 Tenstorrent AI ULC
#
# SPDX-License-Identifier: Apache-2.0

menu "X/Open system interfaces"

config XSI_SINGLE_PROCESS
	bool "X/Open single process"
	depends on POSIX_SINGLE_PROCESS
	depends on POSIX_TIMERS
	help
	  Select 'y' here and Zephyr will provide implementations of
	  gethostid(), gettimeofday(), and putenv().

	  For more information, please see
	  https://pubs.opengroup.org/onlinepubs/9699919799/xrat/V4_subprofiles.html

config XOPEN_STREAMS
	bool "X/Open streams"
	help
	  This option provides support for the X/Open Streams interface, including functions such as
	  fattach(), fdetach(), getmsg(), getpmsg(), putmsg(), and putpmsg().

	  For more information, please see
	  https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap02.html#tag_02_01_05_09

config XSI_SYSTEM_LOGGING
	bool "X/Open system logging"
	help
	  This option provides support for closelog(), openlog(), syslog(),
	  setlogmask(), and vsyslog().

	  For more information, please see
	  https://pubs.opengroup.org/onlinepubs/9699919799/xrat/V4_subprofiles.html

config XSI_THREADS_EXT
	bool "X/Open threads extensions"
	help
	  This option provides support for pthread_attr_getstack(), pthread_attr_setstack(),
	  pthread_getconcurrency(), and pthread_setconcurrency().

	  For more information, please see
	  https://pubs.opengroup.org/onlinepubs/9699919799/xrat/V4_subprofiles.html

endmenu
