United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
Bug ID: 7003707 need to remove (some) system include files from the HotSpot header files
7003707 : need to remove (some) system include files from the HotSpot header files

Details
Type:
Bug
Submit Date:
2010-12-01
Status:
Closed
Updated Date:
2011-04-23
Project Name:
JDK
Resolved Date:
2011-04-23
Component:
hotspot
OS:
generic
Sub-Component:
build
CPU:
generic
Priority:
P4
Resolution:
Fixed
Affected Versions:
hs21
Fixed Versions:
hs20

Related Reports
Backport:
Backport:

Sub Tasks

Description
Need to avoid including system header files in our header files whereever possible to avoid namespaces issues. There is about 15 hpp files that currently do this.

                                    

Comments
EVALUATION

http://hg.openjdk.java.net/jdk7/build/hotspot/rev/03e1b9fce89d
                                     
2010-12-25
EVALUATION

http://hg.openjdk.java.net/jdk7/hotspot/hotspot/rev/03e1b9fce89d
                                     
2010-12-17
EVALUATION

After encountering a problem caused by the HPI changes it has been decided to use this CR to make one specific change.

os_linux.inline.hpp includes sys/ioctl.h for use in the socket_available method. The include of ioctl.h causes name space pollution on some systems due to subsequent includes (eg termios.h) that causes compilation failure. As there is really no reason for socket_available to be inlined (it is used as part of a Java -> native -> VM invocation sequence, so the extra call is insignificant compared to the state transitions) the fix here is to move socket_available into os_linux.cpp and delete the inclusion of sys/ioctl.h from os_linux.inline.hpp
                                     
2010-12-16
PUBLIC COMMENTS

System header files should be included in our header files any time they are needed.

The suggestion to "avoid if possible" is more about seeing whether certain inline definitions can be moved from inline.hpp file into cpp file instead (and not be inline of course) so that the system includes move to the cpp file.
                                     
2010-12-04
PUBLIC COMMENTS

The files concerned are as follows:

hypert /mirrors/ws-mirrors/hsdev/hotspot/src > grepsrc.sh \#include | grep .hpp: | grep -v shark | grep \< | grep -v zero
./os/linux/vm/hpi_linux.hpp:#include <unistd.h>
./os/linux/vm/hpi_linux.hpp:#include <sys/socket.h>
./os/linux/vm/hpi_linux.hpp:#include <sys/poll.h>
./os/linux/vm/hpi_linux.hpp:#include <sys/ioctl.h>
./os/linux/vm/hpi_linux.hpp:#include <netdb.h>
./os/solaris/vm/hpi_solaris.hpp:#include <sys/socket.h>
./os/solaris/vm/hpi_solaris.hpp:#include <sys/poll.h>
./os/solaris/vm/hpi_solaris.hpp:#include <sys/filio.h>
./os/solaris/vm/hpi_solaris.hpp:#include <unistd.h>
./os/solaris/vm/hpi_solaris.hpp:#include <netdb.h>
./os/solaris/vm/hpi_solaris.hpp:#include <setjmp.h>
./os_cpu/linux_arm/vm/bytes_linux_arm.inline.hpp:#include <byteswap.h>
./os_cpu/linux_x86/vm/bytes_linux_x86.inline.hpp:#include <byteswap.h>
./share/vm/adlc/adlc.hpp:#include <iostream>
./share/vm/adlc/adlc.hpp:#include <sys/types.h>
./share/vm/adlc/adlc.hpp:  #include <inttypes.h>
./share/vm/adlc/filebuff.hpp:#include <iostream>
./share/vm/classfile/classLoader.hpp:#include <sys/stat.h>
./share/vm/gc_implementation/g1/ptrQueue.hpp:#include <new>
./share/vm/libadt/port.hpp:#include <stddef.h>
./share/vm/libadt/port.hpp:#include <stdlib.h>
./share/vm/libadt/port.hpp:#include <string.h>
./share/vm/libadt/port.hpp:#include <mem.h>
./share/vm/libadt/port.hpp:#include <string.h>
./share/vm/libadt/port.hpp:#include <strings.h>
./share/vm/libadt/port.hpp:#include <stdlib.h>
./share/vm/libadt/port.hpp:#include <stdlib.h>
./share/vm/libadt/port.hpp:#include <memory.h>
./share/vm/libadt/port.hpp:#include <stdlib.h>
./share/vm/libadt/port.hpp:#include <memory.h>
./share/vm/libadt/port.hpp:#include <stdlib.h>
./share/vm/libadt/port.hpp:#include <stddef.h>
./share/vm/libadt/port.hpp:#include <stdlib.h>
./share/vm/libadt/port.hpp:#include <string.h>
./share/vm/libadt/port.hpp:#include <stddef.h>
./share/vm/libadt/port.hpp:#include <stdlib.h>
./share/vm/libadt/port.hpp:#include <string.h>
./share/vm/libadt/port.hpp:#include <unistd.h>
./share/vm/libadt/port.hpp:// #include <bstring.h>
./share/vm/oops/typeArrayOop.hpp:#include <limits.h>
./share/vm/utilities/debug.hpp:#include <stdarg.h>
./share/vm/utilities/dtrace.hpp:#include <sys/sdt.h>
./share/vm/utilities/globalDefinitions_gcc.hpp:#include <ctype.h>
./share/vm/utilities/globalDefinitions_gcc.hpp:#include <string.h>
./share/vm/utilities/globalDefinitions_gcc.hpp:#include <stdarg.h>
./share/vm/utilities/globalDefinitions_gcc.hpp:#include <stddef.h>
./share/vm/utilities/globalDefinitions_gcc.hpp:#include <stdio.h>
./share/vm/utilities/globalDefinitions_gcc.hpp:#include <stdlib.h>
./share/vm/utilities/globalDefinitions_gcc.hpp:#include <wchar.h>
./share/vm/utilities/globalDefinitions_gcc.hpp:#include <ieeefp.h>
./share/vm/utilities/globalDefinitions_gcc.hpp:#include <math.h>
./share/vm/utilities/globalDefinitions_gcc.hpp:#include <time.h>
./share/vm/utilities/globalDefinitions_gcc.hpp:#include <fcntl.h>
./share/vm/utilities/globalDefinitions_gcc.hpp:#include <dlfcn.h>
./share/vm/utilities/globalDefinitions_gcc.hpp:#include <pthread.h>
./share/vm/utilities/globalDefinitions_gcc.hpp:#include <thread.h>
./share/vm/utilities/globalDefinitions_gcc.hpp:#include <limits.h>
./share/vm/utilities/globalDefinitions_gcc.hpp:#include <errno.h>
./share/vm/utilities/globalDefinitions_gcc.hpp:#include <sys/trap.h>
./share/vm/utilities/globalDefinitions_gcc.hpp:#include <sys/regset.h>
./share/vm/utilities/globalDefinitions_gcc.hpp:#include <sys/procset.h>
./share/vm/utilities/globalDefinitions_gcc.hpp:#include <ucontext.h>
./share/vm/utilities/globalDefinitions_gcc.hpp:#include <setjmp.h>
./share/vm/utilities/globalDefinitions_gcc.hpp:#include <inttypes.h>
./share/vm/utilities/globalDefinitions_gcc.hpp:#include <signal.h>
./share/vm/utilities/globalDefinitions_gcc.hpp:#include <ucontext.h>
./share/vm/utilities/globalDefinitions_gcc.hpp:#include <sys/time.h>
./share/vm/utilities/growableArray.hpp:#include <new>

Other than the hpi files that initiated this suggestion I don't see anything that actually needs fixing. I'd close this as "not a defect" (or as this is an RFE perhaps just "will not fix" - though that implies something needs fixing.
                                     
2010-12-04



Hardware and Software, Engineered to Work Together