Bug 10634 - #include <linux/usbdevice_fs.h> does not compile due to missing __user definition
Summary: #include <linux/usbdevice_fs.h> does not compile due to missing __user defini...
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: glibc-kernheaders (show other bugs)
Version: unstable
Hardware: all Linux
: P2 normal
Assignee: Dmitry V. Levin
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2007-01-10 15:48 MSK by Damir Shayhutdinov
Modified: 2007-07-08 00:56 MSD (History)
3 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Damir Shayhutdinov 2007-01-10 15:48:16 MSK
В многих заголовках ядра присутствует символ препроцессора __user. Насколько я
знаю, он имеет смысл только для ядра. Поэтому софт (конкретно - kvm), который
пытается скомпилироваться с таким заголовком, валится с ошибкой.

/usr/include/linux/usbdevice_fs.h:49: error: variable or field `__user' declared
void
Comment 1 Sergey Vlasov 2007-01-10 15:55:00 MSK
На самом деле макрос __user определяется в <linux/compiler.h>; можно либо
добавить #include <linux/compiler.h> в файлы, использующие __user, либо
пропустить файлы заголовков через sed, чтобы убрать эти конструкции:

# Eliminate the contents of (and inclusions of) compiler.h
HDRSED  := sed 	-e "s/ inline / __inline__ /g" \
		-e "s/[[:space:]]__user[[:space:]]\+/ /g" \
		-e "s/(__user[[:space:]]\+/ (/g" \
		-e "s/[[:space:]]__force[[:space:]]\+/ /g" \
		-e "s/(__force[[:space:]]\+/ (/g" \
		-e "s/[[:space:]]__iomem[[:space:]]\+/ /g" \
		-e "s/(__iomem[[:space:]]\+/ (/g" \
		-e "s/[[:space:]]__attribute_const__[[:space:]]\+/\ /g" \
		-e "s/[[:space:]]__attribute_const__$$//" \
		-e "/^\#include <linux\/compiler.h>/d"

(из linux-2.6.18/scripts/Makefile.headersinst).

Вариант "добавить #include <linux/compiler.h> в файлы, использующие заголовки
ядра" не годится, поскольку linux/compiler.h не входит в набор файлов, которые
разработчики ядра считают допустимыми для использования в userspace (этот файл
не устанавливается по make headers_install).
Comment 2 Dmitry V. Levin 2007-01-25 03:19:13 MSK
Hopefully fixed in 2.6.17-alt4.