Print this page
5045 use atomic_{inc,dec}_* instead of atomic_add_*
*** 238,259 ****
# define IPF_IS_LOOPBACK(f) ((f) & FI_NOCKSUM)
# endif /* SOLARIS2 >= 10 */
# if SOLARIS2 >= 6
# if SOLARIS2 == 6
! # define ATOMIC_INCL(x) atomic_add_long((uint32_t*)&(x), 1)
! # define ATOMIC_DECL(x) atomic_add_long((uint32_t*)&(x), -1)
# else
! # define ATOMIC_INCL(x) atomic_add_long(&(x), 1)
! # define ATOMIC_DECL(x) atomic_add_long(&(x), -1)
# endif /* SOLARIS2 == 6 */
! # define ATOMIC_INC64(x) atomic_add_64((uint64_t*)&(x), 1)
! # define ATOMIC_INC32(x) atomic_add_32((uint32_t*)&(x), 1)
! # define ATOMIC_INC16(x) atomic_add_16((uint16_t*)&(x), 1)
! # define ATOMIC_DEC64(x) atomic_add_64((uint64_t*)&(x), -1)
! # define ATOMIC_DEC32(x) atomic_add_32((uint32_t*)&(x), -1)
! # define ATOMIC_DEC16(x) atomic_add_16((uint16_t*)&(x), -1)
# else
# define ATOMIC_INC(x) { mutex_enter(&ipf_rw); (x)++; \
mutex_exit(&ipf_rw); }
# define ATOMIC_DEC(x) { mutex_enter(&ipf_rw); (x)--; \
mutex_exit(&ipf_rw); }
--- 238,259 ----
# define IPF_IS_LOOPBACK(f) ((f) & FI_NOCKSUM)
# endif /* SOLARIS2 >= 10 */
# if SOLARIS2 >= 6
# if SOLARIS2 == 6
! # define ATOMIC_INCL(x) atomic_inc_ulong((uint32_t *)&(x))
! # define ATOMIC_DECL(x) atomic_dec_ulong((uint32_t *)&(x))
# else
! # define ATOMIC_INCL(x) atomic_inc_ulong(&(x))
! # define ATOMIC_DECL(x) atomic_dec_ulong(&(x))
# endif /* SOLARIS2 == 6 */
! # define ATOMIC_INC64(x) atomic_inc_64((uint64_t *)&(x))
! # define ATOMIC_INC32(x) atomic_inc_32((uint32_t *)&(x))
! # define ATOMIC_INC16(x) atomic_inc_16((uint16_t *)&(x))
! # define ATOMIC_DEC64(x) atomic_dec_64((uint64_t *)&(x))
! # define ATOMIC_DEC32(x) atomic_dec_32((uint32_t *)&(x))
! # define ATOMIC_DEC16(x) atomic_dec_16((uint16_t *)&(x))
# else
# define ATOMIC_INC(x) { mutex_enter(&ipf_rw); (x)++; \
mutex_exit(&ipf_rw); }
# define ATOMIC_DEC(x) { mutex_enter(&ipf_rw); (x)--; \
mutex_exit(&ipf_rw); }
*** 923,940 ****
# include <machine/atomic.h>
# define ATOMIC_INC(x) { mtx_lock(&ipf_rw.ipf_lk); (x)++; \
mtx_unlock(&ipf_rw.ipf_lk); }
# define ATOMIC_DEC(x) { mtx_lock(&ipf_rw.ipf_lk); (x)--; \
mtx_unlock(&ipf_rw.ipf_lk); }
! # define ATOMIC_INCL(x) atomic_add_long(&(x), 1)
# define ATOMIC_INC64(x) ATOMIC_INC(x)
! # define ATOMIC_INC32(x) atomic_add_32(&(x), 1)
! # define ATOMIC_INC16(x) atomic_add_16(&(x), 1)
! # define ATOMIC_DECL(x) atomic_add_long(&(x), -1)
# define ATOMIC_DEC64(x) ATOMIC_DEC(x)
! # define ATOMIC_DEC32(x) atomic_add_32(&(x), -1)
! # define ATOMIC_DEC16(x) atomic_add_16(&(x), -1)
# define SPL_X(x) ;
# define SPL_NET(x) ;
# define SPL_IMP(x) ;
extern int in_cksum __P((struct mbuf *, int));
# endif /* __FreeBSD_version >= 500043 */
--- 923,940 ----
# include <machine/atomic.h>
# define ATOMIC_INC(x) { mtx_lock(&ipf_rw.ipf_lk); (x)++; \
mtx_unlock(&ipf_rw.ipf_lk); }
# define ATOMIC_DEC(x) { mtx_lock(&ipf_rw.ipf_lk); (x)--; \
mtx_unlock(&ipf_rw.ipf_lk); }
! # define ATOMIC_INCL(x) atomic_inc_ulong(&(x))
# define ATOMIC_INC64(x) ATOMIC_INC(x)
! # define ATOMIC_INC32(x) atomic_inc_32(&(x))
! # define ATOMIC_INC16(x) atomic_inc_16(&(x))
! # define ATOMIC_DECL(x) atomic_dec_ulong(&(x))
# define ATOMIC_DEC64(x) ATOMIC_DEC(x)
! # define ATOMIC_DEC32(x) atomic_dec_32(&(x))
! # define ATOMIC_DEC16(x) atomic_dec_16(&(x))
# define SPL_X(x) ;
# define SPL_NET(x) ;
# define SPL_IMP(x) ;
extern int in_cksum __P((struct mbuf *, int));
# endif /* __FreeBSD_version >= 500043 */