posixoptions - optional parts of the POSIX standard
| Use Case | Option Constant | sysconf Parameter |
|---|---|---|
| Check advisory info support | _POSIX_ADVISORY_INFO | _SC_ADVISORY_INFO |
| Check asynchronous I/O support | _POSIX_ASYNCHRONOUS_IO | _SC_ASYNCHRONOUS_IO |
| Check barrier support | _POSIX_BARRIERS | _SC_BARRIERS |
| Check clock selection support | _POSIX_CLOCK_SELECTION | _SC_CLOCK_SELECTION |
| Check CPU time support | _POSIX_CPUTIME | _SC_CPUTIME |
| Check fsync support | _POSIX_FSYNC | _SC_FSYNC |
| Check IPv6 support | _POSIX_IPV6 | _SC_IPV6 |
| Check job control support | _POSIX_JOB_CONTROL | _SC_JOB_CONTROL |
| Check mapped files support | _POSIX_MAPPED_FILES | _SC_MAPPED_FILES |
| Check memory locking support | _POSIX_MEMLOCK | _SC_MEMLOCK |
| Check memory locking range support | _POSIX_MEMLOCK_RANGE | _SC_MEMLOCK_RANGE |
| Check memory protection support | _POSIX_MEMORY_PROTECTION | _SC_MEMORY_PROTECTION |
| Check message passing support | _POSIX_MESSAGE_PASSING | _SC_MESSAGE_PASSING |
| Check monotonic clock support | _POSIX_MONOTONIC_CLOCK | _SC_MONOTONIC_CLOCK |
| Check prioritized I/O support | _POSIX_PRIORITIZED_IO | _SC_PRIORITIZED_IO |
| Check priority scheduling support | _POSIX_PRIORITY_SCHEDULING | _SC_PRIORITY_SCHEDULING |
| Check raw sockets support | _POSIX_RAW_SOCKETS | â |
| Check realtime signals support | _POSIX_REALTIME_SIGNALS | _SC_REALTIME_SIGNALS |
| Check semaphores support | _POSIX_SEMAPHORES | _SC_SEMAPHORES |
| Check shared memory objects support | _POSIX_SHARED_MEMORY_OBJECTS | _SC_SHARED_MEMORY_OBJECTS |
| Check spawn support | _POSIX_SPAWN | _SC_SPAWN |
| Check spin locks support | _POSIX_SPIN_LOCKS | _SC_SPIN_LOCKS |
| Check sporadic server support | _POSIX_SPORADIC_SERVER | _SC_SPORADIC_SERVER |
| Check synchronized I/O support | _POSIX_SYNCHRONIZED_IO | _SC_SYNCHRONIZED_IO |
| Check thread stack address support | _POSIX_THREAD_ATTR_STACKADDR | _SC_THREAD_ATTR_STACKADDR |
| Check thread stack size support | _POSIX_THREAD_ATTR_STACKSIZE | _SC_THREAD_ATTR_STACKSIZE |
| Check thread CPU time support | _POSIX_THREAD_CPUTIME | _SC_THREAD_CPUTIME |
| Check thread priority inheritance support | _POSIX_THREAD_PRIO_INHERIT | _SC_THREAD_PRIO_INHERIT |
| Check thread priority protection support | _POSIX_THREAD_PRIO_PROTECT | _SC_THREAD_PRIO_PROTECT |
| Check thread priority scheduling support | _POSIX_THREAD_PRIORITY_SCHEDULING | _SC_THREAD_PRIORITY_SCHEDULING |
| Check thread process shared support | _POSIX_THREAD_PROCESS_SHARED | _SC_THREAD_PROCESS_SHARED |
| Check thread safe functions support | _POSIX_THREAD_SAFE_FUNCTIONS | _SC_THREAD_SAFE_FUNCTIONS |
| Check thread sporadic server support | _POSIX_THREAD_SPORADIC_SERVER | _SC_THREAD_SPORADIC_SERVER |
| Check basic thread support | _POSIX_THREADS | _SC_THREADS |
| Check timeouts support | _POSIX_TIMEOUTS | _SC_TIMEOUTS |
| Check timers support | _POSIX_TIMERS | _SC_TIMERS |
| Check trace support | _POSIX_TRACE | _SC_TRACE |
| Check trace event filter support | _POSIX_TRACE_EVENT_FILTER | _SC_TRACE_EVENT_FILTER |
| Check trace inherit support | _POSIX_TRACE_INHERIT | _SC_TRACE_INHERIT |
| Check trace log support | _POSIX_TRACE_LOG | _SC_TRACE_LOG |
| Check typed memory objects support | _POSIX_TYPED_MEMORY_OBJECTS | _SC_TYPED_MEMORY_OBJECT |
The POSIX standard (the information below is from POSIX.1-2001) describes a set of behaviors and interfaces for a compliant system. However, many interfaces are optional and there are feature test macros to test the availability of interfaces at compile time, and functions sysconf(3), fpathconf(3), pathconf(3), confstr(3) to do this at run time. From shell scripts one can use getconf(1). For more detail, see sysconf(3).
We give the name of the POSIX abbreviation, the option, the name of the sysconf(3) parameter used to inquire about the option, and possibly a very short description. Much more precise detail can be found in the POSIX standard itself, versions of which can nowadays be accessed freely on the web.
_POSIX_ADVISORY_INFO - _SC_ADVISORY_INFOđ The following advisory functions are present:
posix_fadvise()posix_fallocate()posix_memalign()posix_madvise()_POSIX_ASYNCHRONOUS_IO - _SC_ASYNCHRONOUS_IOđ The header <aio.h> is present. The following functions are present:
aio_cancel()aio_error()aio_fsync()aio_read()aio_return()aio_suspend()aio_write()lio_listio()_POSIX_BARRIERS - _SC_BARRIERSâšī¸ This option implies the _POSIX_THREADS and _POSIX_THREAD_SAFE_FUNCTIONS options. The following functions are present:
pthread_barrier_destroy()pthread_barrier_init()pthread_barrier_wait()pthread_barrierattr_destroy()pthread_barrierattr_init()POSIX_CHOWN_RESTRICTED (no abbreviation)âšī¸ If this option is in effect (as it always is under POSIX.1-2001), then only root may change the owner of a file, and nonroot can set the group of a file only to one of the groups it belongs to. This affects the following functions:
chown()fchown()_POSIX_CLOCK_SELECTION - _SC_CLOCK_SELECTIONâšī¸ This option implies the _POSIX_TIMERS option. The following functions are present:
pthread_condattr_getclock()pthread_condattr_setclock()clock_nanosleep()â ī¸ If CLOCK_REALTIME is changed by the function clock_settime(), then this affects all timers set for an absolute time.
_POSIX_CPUTIME - _SC_CPUTIMEâšī¸ The CLOCK_PROCESS_CPUTIME_ID clock ID is supported. The initial value of this clock is 0 for each process. This option implies the _POSIX_TIMERS option. The function clock_getcpuclockid() is present.
_POSIX_FILE_LOCKING - _SC_FILE_LOCKINGâ This option has been deleted. Not in final XPG6.
_POSIX_FSYNC - _SC_FSYNCđ The function fsync() is present.
_POSIX_IPV6 - _SC_IPV6đ Internet Protocol Version 6 is supported.
_POSIX_JOB_CONTROL - _SC_JOB_CONTROLâšī¸ If this option is in effect (as it always is under POSIX.1-2001), then the system implements POSIX-style job control, and the following functions are present:
setpgid()tcdrain()tcflush()tcgetpgrp()tcsendbreak()tcsetattr()tcsetpgrp()_POSIX_MAPPED_FILES - _SC_MAPPED_FILESâšī¸ Shared memory is supported. The include file <sys/mman.h> is present. The following functions are present:
mmap()msync()munmap()_POSIX_MEMLOCK - _SC_MEMLOCKâšī¸ Shared memory can be locked into core. The following functions are present:
mlockall()munlockall()_POSIX_MEMLOCK_RANGE - _SC_MEMLOCK_RANGEâšī¸ More precisely, ranges can be locked into core. The following functions are present:
mlock()munlock()_POSIX_MEMORY_PROTECTION - _SC_MEMORY_PROTECTIONđ The function mprotect() is present.
_POSIX_MESSAGE_PASSING - _SC_MESSAGE_PASSINGđ The include file <mqueue.h> is present. The following functions are present:
mq_close()mq_getattr()mq_notify()mq_open()mq_receive()mq_send()mq_setattr()mq_unlink()_POSIX_MONOTONIC_CLOCK - _SC_MONOTONIC_CLOCKâšī¸ CLOCK_MONOTONIC is supported. This option implies the _POSIX_TIMERS option. The following functions are affected:
aio_suspend()clock_getres()clock_gettime()clock_settime()timer_create()_POSIX_MULTI_PROCESS - _SC_MULTI_PROCESSâ This option has been deleted. Not in final XPG6.
_POSIX_NO_TRUNCâšī¸ If this option is in effect (as it always is under POSIX.1-2001), then pathname components longer than NAME_MAX are not truncated, but give an error. This property may be dependent on the path prefix of the component.
_POSIX_PRIORITIZED_IO - _SC_PRIORITIZED_IOâšī¸ This option says that one can specify priorities for asynchronous I/O. This affects the functions:
aio_read()aio_write()_POSIX_PRIORITY_SCHEDULING - _SC_PRIORITY_SCHEDULINGđ The include file <sched.h> is present. The following functions are present:
sched_get_priority_max()sched_get_priority_min()sched_getparam()sched_getscheduler()sched_rr_get_interval()sched_setparam()sched_setscheduler()sched_yield()âšī¸ If also _POSIX_SPAWN is in effect, then the following functions are present:
posix_spawnattr_getschedparam()posix_spawnattr_getschedpolicy()posix_spawnattr_setschedparam()posix_spawnattr_setschedpolicy()_POSIX_RAW_SOCKETSđ Raw sockets are supported. The following functions are affected:
getsockopt()setsockopt()_POSIX_READER_WRITER_LOCKS - _SC_READER_WRITER_LOCKSâšī¸ This option implies the _POSIX_THREADS option. Conversely, under POSIX.1-2001 the _POSIX_THREADS option implies this option.
đ The following functions are present:
pthread_rwlock_destroy()pthread_rwlock_init()pthread_rwlock_rdlock()pthread_rwlock_tryrdlock()pthread_rwlock_trywrlock()pthread_rwlock_unlock()pthread_rwlock_wrlock()pthread_rwlockattr_destroy()pthread_rwlockattr_init()_POSIX_REALTIME_SIGNALS - _SC_REALTIME_SIGNALSđ Realtime signals are supported. The following functions are present:
sigqueue()sigtimedwait()sigwaitinfo()_POSIX_REGEXP - _SC_REGEXPâšī¸ If this option is in effect (as it always is under POSIX.1-2001), then POSIX regular expressions are supported and the following functions are present:
regcomp()regerror()regexec()regfree()_POSIX_SAVED_IDS - _SC_SAVED_IDSâšī¸ If this option is in effect (as it always is under POSIX.1-2001), then a process has a saved set-user-ID and a saved set-group-ID. The following functions are affected:
exec()kill()seteuid()setegid()setgid()setuid()_POSIX_SEMAPHORES - _SC_SEMAPHORESđ The include file <semaphore.h> is present. The following functions are present:
sem_close()sem_destroy()sem_getvalue()sem_init()sem_open()sem_post()sem_trywait()sem_unlink()sem_wait()_POSIX_SHARED_MEMORY_OBJECTS - _SC_SHARED_MEMORY_OBJECTSđ The following functions are present:
mmap()munmap()shm_open()shm_unlink()_POSIX_SHELL - _SC_SHELLâšī¸ If this option is in effect (as it always is under POSIX.1-2001), the function system() is present.
_POSIX_SPAWN - _SC_SPAWNâšī¸ This option describes support for process creation in a context where it is difficult or impossible to use fork(), for example, because no MMU is present.
đ If _POSIX_SPAWN is in effect, then the include file <spawn.h> and the following functions are present:
posix_spawn()posix_spawn_file_actions_addclose()posix_spawn_file_actions_adddup2()posix_spawn_file_actions_addopen()posix_spawn_file_actions_destroy()posix_spawn_file_actions_init()posix_spawnattr_destroy()posix_spawnattr_getsigdefault()posix_spawnattr_getflags()posix_spawnattr_getpgroup()posix_spawnattr_getsigmask()posix_spawnattr_init()posix_spawnattr_setsigdefault()posix_spawnattr_setflags()posix_spawnattr_setpgroup()posix_spawnattr_setsigmask()posix_spawnp()âšī¸ If also _POSIX_PRIORITY_SCHEDULING is in effect, then the following functions are present:
posix_spawnattr_getschedparam()posix_spawnattr_getschedpolicy()posix_spawnattr_setschedparam()posix_spawnattr_setschedpolicy()_POSIX_SPIN_LOCKS - _SC_SPIN_LOCKSâšī¸ This option implies the _POSIX_THREADS and _POSIX_THREAD_SAFE_FUNCTIONS options. The following functions are present:
pthread_spin_destroy()pthread_spin_init()pthread_spin_lock()pthread_spin_trylock()pthread_spin_unlock()_POSIX_SPORADIC_SERVER - _SC_SPORADIC_SERVERâšī¸ The scheduling policy SCHED_SPORADIC is supported. This option implies the _POSIX_PRIORITY_SCHEDULING option. The following functions are affected:
sched_setparam()sched_setscheduler()_POSIX_SYNCHRONIZED_IO - _SC_SYNCHRONIZED_IOđ The following functions are affected:
open()msync()fsync()fdatasync()_POSIX_THREAD_ATTR_STACKADDR - _SC_THREAD_ATTR_STACKADDRđ The following functions are affected:
pthread_attr_getstack()pthread_attr_getstackaddr()pthread_attr_setstack()pthread_attr_setstackaddr()_POSIX_THREAD_ATTR_STACKSIZE - _SC_THREAD_ATTR_STACKSIZEđ The following functions are affected:
pthread_attr_getstack()pthread_attr_getstacksize()pthread_attr_setstack()pthread_attr_setstacksize()_POSIX_THREAD_CPUTIME - _SC_THREAD_CPUTIMEâšī¸ The clockID CLOCK_THREAD_CPUTIME_ID is supported. This option implies the _POSIX_TIMERS option. The following functions are affected:
pthread_getcpuclockid()clock_getres()clock_gettime()clock_settime()timer_create()_POSIX_THREAD_PRIO_INHERIT - _SC_THREAD_PRIO_INHERITđ The following functions are affected:
pthread_mutexattr_getprotocol()pthread_mutexattr_setprotocol()_POSIX_THREAD_PRIO_PROTECT - _SC_THREAD_PRIO_PROTECTđ The following functions are affected:
pthread_mutex_getprioceiling()pthread_mutex_setprioceiling()pthread_mutexattr_getprioceiling()pthread_mutexattr_getprotocol()pthread_mutexattr_setprioceiling()pthread_mutexattr_setprotocol()_POSIX_THREAD_PRIORITY_SCHEDULING - _SC_THREAD_PRIORITY_SCHEDULINGâšī¸ If this option is in effect, the different threads inside a process can run with different priorities and/or different schedulers. The following functions are affected:
pthread_attr_getinheritsched()pthread_attr_getschedpolicy()pthread_attr_getscope()pthread_attr_setinheritsched()pthread_attr_setschedpolicy()pthread_attr_setscope()pthread_getschedparam()pthread_setschedparam()pthread_setschedprio()_POSIX_THREAD_PROCESS_SHARED - _SC_THREAD_PROCESS_SHAREDđ The following functions are affected:
pthread_barrierattr_getpshared()pthread_barrierattr_setpshared()pthread_condattr_getpshared()pthread_condattr_setpshared()pthread_mutexattr_getpshared()pthread_mutexattr_setpshared()pthread_rwlockattr_getpshared()pthread_rwlockattr_setpshared()_POSIX_THREAD_SAFE_FUNCTIONS - _SC_THREAD_SAFE_FUNCTIONSđ The following functions are affected:
readdir_r()getgrgid_r()getgrnam_r()getpwnam_r()getpwuid_r()flockfile()ftrylockfile()funlockfile()getc_unlocked()getchar_unlocked()putc_unlocked()putchar_unlocked()rand_r()strerror_r()strtok_r()asctime_r()ctime_r()gmtime_r()localtime_r()_POSIX_THREAD_SPORADIC_SERVER - _SC_THREAD_SPORADIC_SERVERâšī¸ This option implies the _POSIX_THREAD_PRIORITY_SCHEDULING option. The following functions are affected:
sched_getparam()sched_setparam()sched_setscheduler()_POSIX_THREADS - _SC_THREADSđ Basic support for POSIX threads is available. The following functions are present:
pthread_atfork()pthread_attr_destroy()pthread_attr_getdetachstate()pthread_attr_getschedparam()pthread_attr_init()pthread_attr_setdetachstate()pthread_attr_setschedparam()pthread_cancel()pthread_cleanup_push()pthread_cleanup_pop()pthread_cond_broadcast()pthread_cond_destroy()pthread_cond_init()pthread_cond_signal()pthread_cond_timedwait()pthread_cond_wait()pthread_condattr_destroy()pthread_condattr_init()pthread_create()pthread_detach()pthread_equal()pthread_exit()pthread_getspecific()pthread_join()pthread_key_create()pthread_key_delete()pthread_mutex_destroy()pthread_mutex_init()pthread_mutex_lock()pthread_mutex_trylock()pthread_mutex_unlock()pthread_mutexattr_destroy()pthread_mutexattr_init()pthread_once()pthread_rwlock_destroy()pthread_rwlock_init()pthread_rwlock_rdlock()pthread_rwlock_tryrdlock()pthread_rwlock_trywrlock()pthread_rwlock_unlock()pthread_rwlock_wrlock()pthread_rwlockattr_destroy()pthread_rwlockattr_init()pthread_self()pthread_setcancelstate()pthread_setcanceltype()pthread_setspecific()pthread_testcancel()_POSIX_TIMEOUTS - _SC_TIMEOUTSđ The following functions are present:
mq_timedreceive()mq_timedsend()pthread_mutex_timedlock()pthread_rwlock_timedrdlock()pthread_rwlock_timedwrlock()sem_timedwait()posix_trace_timedgetnext_event()_POSIX_TIMERS - _SC_TIMERSđ The following functions are present:
clock_getres()clock_gettime()clock_settime()nanosleep()timer_create()timer_delete()timer_gettime()timer_getoverrun()timer_settime()_POSIX_TRACE - _SC_TRACEđ POSIX tracing is available. The following functions are present:
posix_trace_attr_destroy()posix_trace_attr_getclockres()posix_trace_attr_getcreatetime()posix_trace_attr_getgenversion()posix_trace_attr_getmaxdatasize()posix_trace_attr_getmaxsystemeventsize()posix_trace_attr_getmaxusereventsize()posix_trace_attr_getname()posix_trace_attr_getstreamfullpolicy()posix_trace_attr_getstreamsize()posix_trace_attr_init()posix_trace_attr_setmaxdatasize()posix_trace_attr_setname()posix_trace_attr_setstreamsize()posix_trace_attr_setstreamfullpolicy()posix_trace_clear()posix_trace_create()posix_trace_event()posix_trace_eventid_equal()posix_trace_eventid_get_name()posix_trace_eventid_open()posix_trace_eventtypelist_getnext_id()posix_trace_eventtypelist_rewind()posix_trace_flush()posix_trace_get_attr()posix_trace_get_status()posix_trace_getnext_event()posix_trace_shutdown()posix_trace_start()posix_trace_stop()posix_trace_trygetnext_event()_POSIX_TRACE_EVENT_FILTER - _SC_TRACE_EVENT_FILTERâšī¸ This option implies the _POSIX_TRACE option. The following functions are present:
posix_trace_eventset_add()posix_trace_eventset_del()posix_trace_eventset_empty()posix_trace_eventset_fill()posix_trace_eventset_ismember()posix_trace_get_filter()posix_trace_set_filter()posix_trace_trid_eventid_open()_POSIX_TRACE_INHERIT - _SC_TRACE_INHERITâšī¸ Tracing children of the traced process is supported. This option implies the _POSIX_TRACE option. The following functions are present:
posix_trace_attr_getinherited()posix_trace_attr_setinherited()_POSIX_TRACE_LOG - _SC_TRACE_LOGâšī¸ This option implies the _POSIX_TRACE option. The following functions are present:
posix_trace_attr_getlogfullpolicy()posix_trace_attr_getlogsize()posix_trace_attr_setlogfullpolicy()posix_trace_attr_setlogsize()posix_trace_close()posix_trace_create_withlog()posix_trace_open()posix_trace_rewind()_POSIX_TYPED_MEMORY_OBJECTS - _SC_TYPED_MEMORY_OBJECTđ The following functions are present:
posix_mem_offset()posix_typed_mem_get_info()posix_typed_mem_open()_POSIX_VDISABLEâšī¸ Always present (probably 0). Value to set a changeable special control character to indicate that it is disabled.
_XOPEN_CRYPT - _SC_XOPEN_CRYPTđ The following functions are present:
crypt()encrypt()setkey()_XOPEN_REALTIME - _SC_XOPEN_REALTIMEâšī¸ This option implies the following options:
_POSIX_ASYNCHRONOUS_IO==200112L_POSIX_FSYNC_POSIX_MAPPED_FILES_POSIX_MEMLOCK==200112L_POSIX_MEMLOCK_RANGE==200112L_POSIX_MEMORY_PROTECTION_POSIX_MESSAGE_PASSING==200112L_POSIX_PRIORITIZED_IO_POSIX_PRIORITY_SCHEDULING==200112L_POSIX_REALTIME_SIGNALS==200112L_POSIX_SEMAPHORES==200112L_POSIX_SHARED_MEMORY_OBJECTS==200112L_POSIX_SYNCHRONIZED_IO==200112L_POSIX_TIMERS==200112Lâšī¸ The Advanced Realtime option group implies that the following options are all defined to 200112L:
_POSIX_ADVISORY_INFO_POSIX_CLOCK_SELECTION (implies _POSIX_TIMERS)_POSIX_CPUTIME (implies _POSIX_TIMERS)_POSIX_MONOTONIC_CLOCK (implies _POSIX_TIMERS)_POSIX_SPAWN_POSIX_SPORADIC_SERVER (implies _POSIX_PRIORITY_SCHEDULING)_POSIX_TIMEOUTS_POSIX_TYPED_MEMORY_OBJECTS_XOPEN_REALTIME_THREADS - _SC_XOPEN_REALTIME_THREADSâšī¸ This option implies that the following options are all defined to 200112L:
_POSIX_THREAD_PRIO_INHERIT_POSIX_THREAD_PRIO_PROTECT_POSIX_THREAD_PRIORITY_SCHEDULINGâšī¸ This option implies that the following options are all defined to 200112L:
_POSIX_BARRIERS (implies _POSIX_THREADS, _POSIX_THREAD_SAFE_FUNCTIONS)_POSIX_SPIN_LOCKS (implies _POSIX_THREADS, _POSIX_THREAD_SAFE_FUNCTIONS)_POSIX_THREAD_CPUTIME (implies _POSIX_TIMERS)_POSIX_THREAD_SPORADIC_SERVER (implies _POSIX_THREAD_PRIORITY_SCHEDULING)âšī¸ This option implies that the following options are all defined to 200112L:
_POSIX_TRACE_POSIX_TRACE_EVENT_FILTER_POSIX_TRACE_LOG_POSIX_TRACE_INHERIT_XOPEN_STREAMS - _SC_XOPEN_STREAMSđ The following functions are present:
fattach()fdetach()getmsg()getpmsg()ioctl()isastream()putmsg()putpmsg()_XOPEN_LEGACY - _SC_XOPEN_LEGACYâšī¸ Functions included in the legacy option group were previously mandatory, but are now optional in this version. The following functions are present:
bcmp()bcopy()bzero()ecvt()fcvt()ftime()gcvt()getcwd()index()mktemp()rindex()utimes()wcswcs()_XOPEN_UNIX - _SC_XOPEN_UNIXđ The following functions are present:
mmap()munmap()msync()âšī¸ This option implies the following options:
_POSIX_FSYNC_POSIX_MAPPED_FILES_POSIX_MEMORY_PROTECTION_POSIX_THREAD_ATTR_STACKADDR_POSIX_THREAD_ATTR_STACKSIZE_POSIX_THREAD_PROCESS_SHARED_POSIX_THREAD_SAFE_FUNCTIONS_POSIX_THREADSâšī¸ This option may imply the following options from the XSI option groups:
_XOPEN_CRYPT)_XOPEN_REALTIME)_XOPEN_REALTIME_THREADS)_XOPEN_LEGACY)This page is part of release 5.10 of the Linux man-pages project. A description of the project, information about reporting bugs, and the latest version of this page, can be found at https://www.kernel.org/doc/man-pages/.
2018-04-30
Generated by phpman v4.9.26-1-g511901d · Markdown · JSON · MCP Author: Che Dong Under GNU General Public License
2026-08-05 03:51 @216.73.216.89
CrawledBy Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
Enhanced by LLM: deepseek-v4-flash / taotoken.net / www.chedong.com - original format