2012-03-28 17:30:03 +00:00
|
|
|
generic-y += barrier.h
|
2011-06-04 18:52:05 +00:00
|
|
|
generic-y += bug.h
|
|
|
|
generic-y += bugs.h
|
|
|
|
generic-y += checksum.h
|
2018-03-26 14:59:15 +00:00
|
|
|
generic-y += compat.h
|
2011-06-04 18:52:05 +00:00
|
|
|
generic-y += current.h
|
|
|
|
generic-y += device.h
|
|
|
|
generic-y += div64.h
|
|
|
|
generic-y += dma.h
|
2018-07-19 13:02:32 +00:00
|
|
|
generic-y += dma-mapping.h
|
2011-06-04 18:52:05 +00:00
|
|
|
generic-y += emergency-restart.h
|
2012-03-28 17:30:03 +00:00
|
|
|
generic-y += exec.h
|
2016-12-25 19:34:44 +00:00
|
|
|
generic-y += extable.h
|
2011-06-04 18:52:05 +00:00
|
|
|
generic-y += fb.h
|
|
|
|
generic-y += ftrace.h
|
|
|
|
generic-y += hardirq.h
|
|
|
|
generic-y += hw_irq.h
|
2012-05-09 21:19:44 +00:00
|
|
|
generic-y += irq.h
|
2011-06-04 18:52:05 +00:00
|
|
|
generic-y += irq_regs.h
|
2014-09-06 13:43:02 +00:00
|
|
|
generic-y += irq_work.h
|
2011-06-04 18:52:05 +00:00
|
|
|
generic-y += kdebug.h
|
|
|
|
generic-y += kmap_types.h
|
2017-07-09 18:32:51 +00:00
|
|
|
generic-y += kprobes.h
|
2011-06-04 18:52:05 +00:00
|
|
|
generic-y += local.h
|
2014-01-21 23:36:22 +00:00
|
|
|
generic-y += mcs_spinlock.h
|
2015-07-17 23:23:58 +00:00
|
|
|
generic-y += mm-arch-hooks.h
|
2011-06-04 18:52:05 +00:00
|
|
|
generic-y += module.h
|
|
|
|
generic-y += pci.h
|
|
|
|
generic-y += percpu.h
|
2014-01-21 23:36:16 +00:00
|
|
|
generic-y += preempt.h
|
2017-03-23 22:13:03 +00:00
|
|
|
generic-y += qspinlock_types.h
|
|
|
|
generic-y += qspinlock.h
|
|
|
|
generic-y += qrwlock_types.h
|
|
|
|
generic-y += qrwlock.h
|
2011-06-04 18:52:05 +00:00
|
|
|
generic-y += sections.h
|
|
|
|
generic-y += segment.h
|
arch: unexport asm/shmparam.h for all architectures
Most architectures do not export shmparam.h to user-space.
$ find arch -name shmparam.h | sort
arch/alpha/include/asm/shmparam.h
arch/arc/include/asm/shmparam.h
arch/arm64/include/asm/shmparam.h
arch/arm/include/asm/shmparam.h
arch/csky/include/asm/shmparam.h
arch/ia64/include/asm/shmparam.h
arch/mips/include/asm/shmparam.h
arch/nds32/include/asm/shmparam.h
arch/nios2/include/asm/shmparam.h
arch/parisc/include/asm/shmparam.h
arch/powerpc/include/asm/shmparam.h
arch/s390/include/asm/shmparam.h
arch/sh/include/asm/shmparam.h
arch/sparc/include/asm/shmparam.h
arch/x86/include/asm/shmparam.h
arch/xtensa/include/asm/shmparam.h
Strangely, some users of the asm-generic wrapper export shmparam.h
$ git grep 'generic-y += shmparam.h'
arch/c6x/include/uapi/asm/Kbuild:generic-y += shmparam.h
arch/h8300/include/uapi/asm/Kbuild:generic-y += shmparam.h
arch/hexagon/include/uapi/asm/Kbuild:generic-y += shmparam.h
arch/m68k/include/uapi/asm/Kbuild:generic-y += shmparam.h
arch/microblaze/include/uapi/asm/Kbuild:generic-y += shmparam.h
arch/openrisc/include/uapi/asm/Kbuild:generic-y += shmparam.h
arch/riscv/include/asm/Kbuild:generic-y += shmparam.h
arch/unicore32/include/uapi/asm/Kbuild:generic-y += shmparam.h
The newly added riscv correctly creates the asm-generic wrapper
in the kernel space, but the others (c6x, h8300, hexagon, m68k,
microblaze, openrisc, unicore32) create the one in the uapi directory.
Digging into the git history, now I guess fcc8487d477a ("uapi:
export all headers under uapi directories") was the misconversion.
Prior to that commit, no architecture exported to shmparam.h
As its commit description said, that commit exported shmparam.h
for c6x, h8300, hexagon, m68k, openrisc, unicore32.
83f0124ad81e ("microblaze: remove asm-generic wrapper headers")
accidentally exported shmparam.h for microblaze.
This commit unexports shmparam.h for those architectures.
There is no more reason to export include/uapi/asm-generic/shmparam.h,
so it has been moved to include/asm-generic/shmparam.h
Link: http://lkml.kernel.org/r/1546904307-11124-1-git-send-email-yamada.masahiro@socionext.com
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Acked-by: Stafford Horne <shorne@gmail.com>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Michal Simek <monstr@monstr.eu>
Cc: Yoshinori Sato <ysato@users.sourceforge.jp>
Cc: Richard Kuo <rkuo@codeaurora.org>
Cc: Guan Xuetao <gxt@pku.edu.cn>
Cc: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Aurelien Jacquiot <jacquiot.aurelien@gmail.com>
Cc: Greentime Hu <green.hu@gmail.com>
Cc: Guo Ren <guoren@kernel.org>
Cc: Palmer Dabbelt <palmer@sifive.com>
Cc: Stefan Kristiansson <stefan.kristiansson@saunalahti.fi>
Cc: Mark Salter <msalter@redhat.com>
Cc: Albert Ou <aou@eecs.berkeley.edu>
Cc: Jonas Bonn <jonas@southpole.se>
Cc: Vincent Chen <deanbo422@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2019-02-01 22:20:12 +00:00
|
|
|
generic-y += shmparam.h
|
2011-06-04 18:52:05 +00:00
|
|
|
generic-y += string.h
|
2014-01-21 23:36:16 +00:00
|
|
|
generic-y += switch_to.h
|
2011-06-04 18:52:05 +00:00
|
|
|
generic-y += topology.h
|
2012-11-13 20:18:21 +00:00
|
|
|
generic-y += trace_clock.h
|
2011-06-04 18:52:05 +00:00
|
|
|
generic-y += user.h
|
2013-07-30 07:58:11 +00:00
|
|
|
generic-y += vga.h
|
word-at-a-time: make the interfaces truly generic
This changes the interfaces in <asm/word-at-a-time.h> to be a bit more
complicated, but a lot more generic.
In particular, it allows us to really do the operations efficiently on
both little-endian and big-endian machines, pretty much regardless of
machine details. For example, if you can rely on a fast population
count instruction on your architecture, this will allow you to make your
optimized <asm/word-at-a-time.h> file with that.
NOTE! The "generic" version in include/asm-generic/word-at-a-time.h is
not truly generic, it actually only works on big-endian. Why? Because
on little-endian the generic algorithms are wasteful, since you can
inevitably do better. The x86 implementation is an example of that.
(The only truly non-generic part of the asm-generic implementation is
the "find_zero()" function, and you could make a little-endian version
of it. And if the Kbuild infrastructure allowed us to pick a particular
header file, that would be lovely)
The <asm/word-at-a-time.h> functions are as follows:
- WORD_AT_A_TIME_CONSTANTS: specific constants that the algorithm
uses.
- has_zero(): take a word, and determine if it has a zero byte in it.
It gets the word, the pointer to the constant pool, and a pointer to
an intermediate "data" field it can set.
This is the "quick-and-dirty" zero tester: it's what is run inside
the hot loops.
- "prep_zero_mask()": take the word, the data that has_zero() produced,
and the constant pool, and generate an *exact* mask of which byte had
the first zero. This is run directly *outside* the loop, and allows
the "has_zero()" function to answer the "is there a zero byte"
question without necessarily getting exactly *which* byte is the
first one to contain a zero.
If you do multiple byte lookups concurrently (eg "hash_name()", which
looks for both NUL and '/' bytes), after you've done the prep_zero_mask()
phase, the result of those can be or'ed together to get the "either
or" case.
- The result from "prep_zero_mask()" can then be fed into "find_zero()"
(to find the byte offset of the first byte that was zero) or into
"zero_bytemask()" (to find the bytemask of the bytes preceding the
zero byte).
The existence of zero_bytemask() is optional, and is not necessary
for the normal string routines. But dentry name hashing needs it, so
if you enable DENTRY_WORD_AT_A_TIME you need to expose it.
This changes the generic strncpy_from_user() function and the dentry
hashing functions to use these modified word-at-a-time interfaces. This
gets us back to the optimized state of the x86 strncpy that we lost in
the previous commit when moving over to the generic version.
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-05-26 17:43:17 +00:00
|
|
|
generic-y += word-at-a-time.h
|
2013-05-14 07:26:17 +00:00
|
|
|
generic-y += xor.h
|