1*3132a36bSdlg.\" $OpenBSD: atomic_dec_int.9,v 1.6 2014/02/13 12:05:05 dlg Exp $ 21c7e942eSdlg.\" 31c7e942eSdlg.\" Copyright (c) 2014 David Gwynne <dlg@openbsd.org> 41c7e942eSdlg.\" All rights reserved. 51c7e942eSdlg.\" 61c7e942eSdlg.\" Permission to use, copy, modify, and distribute this software for any 71c7e942eSdlg.\" purpose with or without fee is hereby granted, provided that the above 81c7e942eSdlg.\" copyright notice and this permission notice appear in all copies. 91c7e942eSdlg.\" 101c7e942eSdlg.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 111c7e942eSdlg.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 121c7e942eSdlg.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 131c7e942eSdlg.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 141c7e942eSdlg.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 151c7e942eSdlg.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 161c7e942eSdlg.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 171c7e942eSdlg.\" 18c468d2a2Sdlg.Dd $Mdocdate: February 13 2014 $ 193be71636Sdlg.Dt ATOMIC_DEC_INT 9 201c7e942eSdlg.Os 211c7e942eSdlg.Sh NAME 221c7e942eSdlg.Nm atomic_dec_int , 231c7e942eSdlg.Nm atomic_dec_int_nv , 241c7e942eSdlg.Nm atomic_dec_long , 251c7e942eSdlg.Nm atomic_dec_long_nv 261c7e942eSdlg.Nd atomic decrement operations 271c7e942eSdlg.Sh SYNOPSIS 281c7e942eSdlg.In sys/atomic.h 291c7e942eSdlg.Ft void 301c7e942eSdlg.Fn atomic_dec_int "volatile unsigned int *p" 311c7e942eSdlg.Ft unsigned int 321c7e942eSdlg.Fn atomic_dec_int_nv "volatile unsigned int *p" 331c7e942eSdlg.Ft void 341c7e942eSdlg.Fn atomic_dec_long "volatile unsigned long *p " 351c7e942eSdlg.Ft unsigned long 361c7e942eSdlg.Fn atomic_dec_long_nv "volatile unsigned long *p" 371c7e942eSdlg.Sh DESCRIPTION 381c7e942eSdlgThe atomic_dec set of functions provide an interface for atomically 391c7e942eSdlgperforming decrement and decrement-and-fetch operations with respect 401c7e942eSdlgto interrupts and multiple processors in the system. 411c7e942eSdlg.Pp 421c7e942eSdlgThe value referenced by the pointer 431c7e942eSdlg.Fa p 441c7e942eSdlgis decremented by 1. 45c468d2a2Sdlg.Sh CONTEXT 46c468d2a2Sdlg.Fn atomic_dec_int , 47c468d2a2Sdlg.Fn atomic_dec_int_nv , 48c468d2a2Sdlg.Fn atomic_dec_long , 49c468d2a2Sdlgand 50c468d2a2Sdlg.Fn atomic_dec_long_nv 51c468d2a2Sdlgcan all be called during autoconf, from process context, or from interrupt context. 521c7e942eSdlg.Sh RETURN VALUES 531c7e942eSdlg.Nm atomic_dec_int 541c7e942eSdlgand 551c7e942eSdlg.Nm atomic_dec_long 56*3132a36bSdlgperform the decrement without returning any knowledge of the value at 571c7e942eSdlg.Fa p . 581c7e942eSdlg.Pp 591c7e942eSdlg.Nm atomic_dec_int_nv 601c7e942eSdlgand 611c7e942eSdlg.Nm atomic_dec_long_nv 621c7e942eSdlgreturn the value at 631c7e942eSdlg.Fa p 641c7e942eSdlgafter the decrement was performed. 651c7e942eSdlg.Sh SEE ALSO 661c7e942eSdlg.Xr atomic_add_int 9 , 671c7e942eSdlg.Xr atomic_inc_int 9 681c7e942eSdlg.Sh HISTORY 691c7e942eSdlgThe atomic_add functions first appeared in 706cd55c5fSdlg.Nx 5.0 716cd55c5fSdlgand 721c7e942eSdlg.Ox 5.5 . 73