Re: Floating point in kernel

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On Tue, Apr 24, 2007 at 02:07:38PM +0530, Daniel Rodrick wrote:
> I've always read that although it isn't completely forbidden, but
> kernel code shouldn't use floating point arithmetic. It is not
> recommended, but surely looks possible.
> 
> So just for curosity purposes (and without getting into the debate of
> "You shouldn't be doing this..."), can some one point me a working
> example / code on how to use floating point in kernel?

There is no FP use in the kernel. The only thing that comes close is
the use of MMX/SSE/multimedia-instructions-du-jour in the software raid
subsystem (MMX etc. share the register set with FP).

> Also FP arithmatic is not recommended because the code will need to
> manually save and restore FPU registers in the event of context
> switch, right?

Yes, and that's what makes it so expensive to use. You can see it when
the kernel initialises raid5: even though MMX XOR has a larger
throughput than "normal" instructions, the kernel sometimes chooses the
normal instructions because the latency is so much lower.

> But how about in atomic context? Is it safe to use FP
> arithmetic ONLY in atomic context (intr and preemption disabled)?

Even in an atomic context you still need to save the FP state. See what
happens:

  userspace does something with FP
  interrupt
    enter atomic context
    mess with FP
    leave atomic context
  return from interrupt
  userspace finds FP in a different state than before


Erik

- -- 
They're all fools. Don't worry. Darwin may be slow, but he'll
eventually get them. -- Matthew Lammers in alt.sysadmin.recovery
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)

iD8DBQFGLd8Q/PlVHJtIto0RAiAKAJ9vf/vRM+iLYMP9Oq9YuWslb3+kyACeNaID
QDIu/HuIiuEqbMGULc/7GfI=
=N38R
-----END PGP SIGNATURE-----

--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx
Please read the FAQ at http://kernelnewbies.org/FAQ


[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux