Hello,

On Jan 3, 2008 4:45 PM, Manish Katiyar <[EMAIL PROTECTED]> wrote:
> As everyone mentioned, it is to upgrade the data structure, without
> affecting the existing code. It also prevents coders who liberally use
> int with other datatypes like long etc. from doing so and thus also
> prevents some unnoticed errors.
>
> Hope that helps.........
>
> One of the reasons
>
>
> On Jan 3, 2008 7:59 PM, Thanos McAtos <[EMAIL PROTECTED]> wrote:
> > Because that way the data type is more generic. If, in the future, it is
> > decided to be changed from int to something else, you won't have to change
> > anything in your code. This is a foundamental concept in ADTs and
> > generally a good way of programming.
> >
> >
> > > I wonder why atomic_t is defined as a structure containing an integer
> > > rather than just a simple integer?
> > > What are the advantages?
> > >
> > > Hope somebody can explain this, please cc me.
> > >

I would like to add to the other replies the following:
even if the atomic_t type would be int on every architecture, without
special requirements (24 bit ...), and this would be guaranteed not to
change in the future, even then there is a point in using atomic_t
instead of int.

The point is that atomic_t is a so-called opaque type, with the
purpose of hiding the actual type (int) to the user. The only
operations you are allowed to do on atomic_t variables are through the
atomic interface, for example atomic_inc(). You should never do
integer operations on variables of type atomic_t, like
atomic_t my_atom;
my_atom = 3;
my_atom++;

because you would loose the atomicity.If you would know that atomic_t
is actually an int, you could be tempted to do it this way.

By making atomic_t a single-field structure, this type of programming
is even made impossible, and trying to to my_atom++ will be caught by
the compiler.

Best regards,
Thomas

--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to [EMAIL PROTECTED]
Please read the FAQ at http://kernelnewbies.org/FAQ

Reply via email to