Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
NAME
       ck_pr_rtm_begin,	 ck_pr_rtm_end,	ck_pr_rtm_abort, ck_pr_rtm_test	-- re-
       stricted	transactional memory

LIBRARY
       Concurrency Kit (libck, -lck)

SYNOPSIS
       #include	<ck_pr.h>

       unsigned	int
       ck_pr_rtm_begin(void);

       void
       ck_pr_rtm_end(void);

       void
       ck_pr_rtm_abort(const unsigned int status);

       bool
       ck_pr_rtm_test(void);

DESCRIPTION
       These family of functions implement  support  for  restricted  transac-
       tional  memory,	if  available  on the underlying platform.  Currently,
       support is only provided	for Intel Haswell and newer x86	microarchitec-
       tures that have the TSX-NI feature.

       The ck_pr_rtm_begin() function returns CK_PR_RTM_STARTED	if a  transac-
       tion  was  successfully	started.  In case of an	abort, either internal
       (through	a ck_pr_rtm_abort) or external,	program	flow  will  return  to
       the  point  which  the function was called except the return value will
       consist of a bitmap with	one or more of the following bits set:

       CK_PR_RTM_EXPLICIT
	       Set if  the  transactionally  was  explicitly  aborted  through
	       ck_pr_rtm_abort().

       CK_PR_RTM_RETRY
	       Set if the transaction failed but can still succeed if retried.

       CK_PR_RTM_CONFLICT
	       The  transaction	 failed	due to a conflict in one of the	memory
	       addresses that are part of the working set of the transaction.

       CK_PR_RTM_CAPACITY
	       Set if the architecture-defined transaction size	limit was  ex-
	       ceeded.

       CK_PR_RTM_DEBUG
	       Set if a	hardware breakpoint was	triggered.

       CK_PR_RTM_NESTED
	       Set if a	nested transaction failed.

       The  user  is  also  able to specify a one byte abort status by calling
       ck_pr_rtm_abort().  This	status byte can	be extracted  by  calling  the
       CK_PR_RTM_CODE()	function with the return value of ck_pr_rtm_begin() as
       an  argument. The return	value of CK_PR_RTM_CODE() will be the value of
       this status byte.  For additional information, please see the Intel in-
       struction set manuals.

SEE ALSO
       ck_pr_fence_load(3), ck_pr_fence_load_depends(3), ck_pr_fence_store(3),
       ck_pr_fence_memory(3),  ck_pr_load(3),  ck_pr_store(3),	 ck_pr_fas(3),
       ck_pr_faa(3),  ck_pr_inc(3),  ck_pr_dec(3), ck_pr_neg(3), ck_pr_not(3),
       ck_pr_sub(3), ck_pr_and(3),  ck_pr_or(3),  ck_pr_xor(3),	 ck_pr_add(3),
       ck_pr_btc(3), ck_pr_bts(3), ck_pr_btr(3)

       Additional information available	at http://concurrencykit.org/

			       December	17, 2013		  ck_pr_rtm(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=ck_pr_rtm&sektion=3&manpath=FreeBSD+Ports+14.3.quarterly>

home | help