This is an automated email from the git hooks/post-receive script. sthibault pushed a commit to branch master in repository gnumach.
commit 527984fdec81b5c720eccbf887057fa46ec389e0 Author: Samuel Thibault <[email protected]> Date: Wed Jan 13 23:20:48 2016 +0000 Imported Upstream version 1.6+git20160114 --- ChangeLog | 69 +++++++++++++++++++ Makefile.am | 5 ++ Makefile.in | 10 +-- configure | 20 +++--- doc/mach.info | 2 +- doc/mach.info-1 | 4 +- doc/mach.info-2 | 2 +- doc/stamp-vti | 4 +- doc/version.texi | 4 +- i386/Makefrag.am | 1 - i386/i386/phys.c | 3 +- i386/i386/vm_param.h | 4 +- i386/i386at/disk.h | 101 ---------------------------- i386/i386at/lpr.c | 26 ++++---- i386/include/mach/i386/disk.h | 124 ----------------------------------- i386/intel/pmap.c | 1 + kern/mach_clock.c | 2 +- kern/slab.c | 2 +- linux/dev/glue/block.c | 37 +---------- linux/dev/include/linux/fs.h | 4 +- linux/dev/include/linux/locks.h | 10 +-- linux/dev/include/linux/mm.h | 2 +- linux/dev/init/main.c | 4 +- linux/src/drivers/net/e2100.c | 4 +- linux/src/include/asm-i386/termios.h | 4 +- linux/src/include/linux/interrupt.h | 12 ++-- linux/src/include/net/route.h | 16 ++--- linux/src/include/net/sock.h | 6 +- version.m4 | 2 +- vm/vm_map.c | 27 +++++--- vm/vm_object.c | 15 +++-- vm/vm_object.h | 2 +- vm/vm_print.h | 3 +- 33 files changed, 180 insertions(+), 352 deletions(-) diff --git a/ChangeLog b/ChangeLog index e51b563..3d8d038 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,72 @@ +2016-01-13 Samuel Thibault <[email protected]> + + Increase kernel map size + To avoid running out of memory due to the increased consumption by radix + trees which replaced arrays. + + * kern/slab.c (KMEM_MAP_SIZE): Bump from 96MiB to 128MiB. + * i386/i386/vm_param.h (VM_KERNEL_MAP_SIZE): Add 32MiB accordingly. + +2016-01-02 Richard Braun <[email protected]> + + Completely disable strict aliasing + * Makefile.am (AM_CFLAGS): Add -fno-strict-aliasing. + + Fix object page list type + * vm/vm_object.h (struct vm_object): Use queue_head_t instead of + queue_chain_t as the page list type. + +2016-01-02 Flavio Cruz <[email protected]> + + replace extern with static in some linux code + * linux/dev/include/linux/fs.h: Replace extern with static. + * linux/dev/include/linux/locks.h: Likewise. + * linux/dev/include/linux/mm.h: Likewise. + * linux/src/drivers/net/e2100.c: Likewise + * linux/src/include/asm-i386/termios.h: Likewise. + * linux/src/include/linux/interrupt.h: Likewise. + * linux/src/include/net/route.h: Likewise. + * linux/src/include/net/sock.h: Likewise. + + fix t_addr assignment in lpropen + * i386/i386at/lpr.c (lpropen): Fix assignment to t_addr. + +2016-01-01 Flavio Cruz <[email protected]> + + remove unnused disk code and headers + * i386/Makefrag.am: Remove disk.h. + * i386/i386at/disk.h: Remove unnused definitions. + * i386/include/mach/i386/disk.h: Remove. + * linux/dev/glue/block.c (device_get_status): Remove V_GETPARMS case. + + fix some compiler warnings in gnumach + * linux/dev/glue/block.c (out): Cast to device_t. + * linux/dev/init/main.c (alloc_contig_mem): Initialize addr and cast return value to void *. + * i386/i386/phys.c (pmap_copy_page): Initialize src_map. + * i386/intel/pmap.c: Include i386at/model_dep.h. + * kern/mach_clock.c (mapable_time_init): Cast to void *. + +2016-01-01 Richard Braun <[email protected]> + + Slightly improve map debugging readability + * vm/vm_object.c (vm_object_print): Break line so all debugging output fits + in a page. + +2015-12-29 Richard Braun <[email protected]> + + Improve map debugging readability + * vm/vm_map.c (vm_map_print): Reduce indentation, break lines earlier. + (vm_map_copy_print): Likewise. + * vm/vm_object.c (vm_object_print): Likewise. + + Improve VM map debugging + * vm/vm_map.c (vm_map_print): Update arguments to conform to ddb + protocol. + * vm/vm_print.h (vm_map_print): Likewise for prototype. + + Fix vm_map_copyout + * vm/vm_map.c (vm_map_copyout): Reinitialize copy map red-black tree. + 2015-12-11 Samuel Thibault <[email protected]> Fix boot under kvm in linux 4.3 diff --git a/Makefile.am b/Makefile.am index 76a192b..1c1bfff 100644 --- a/Makefile.am +++ b/Makefile.am @@ -63,6 +63,11 @@ AM_CFLAGS += \ AM_CFLAGS += \ -fgnu89-inline +# Much of the Mach code predates C99 and makes invalid assumptions about +# type punning. +AM_CFLAGS += \ + -fno-strict-aliasing + # The smashing stack protector might be enabled by default, but might emit # unsuitable code. if disable_smashing_stack_protector diff --git a/Makefile.in b/Makefile.in index 552ee63..90b4555 100644 --- a/Makefile.in +++ b/Makefile.in @@ -2032,7 +2032,7 @@ am__uninstall_files_from_dir = { \ } DATA = $(exec_msgids_DATA) am__include_mach_i386_HEADERS_DIST = i386/include/mach/i386/asm.h \ - i386/include/mach/i386/boolean.h i386/include/mach/i386/disk.h \ + i386/include/mach/i386/boolean.h \ i386/include/mach/i386/eflags.h \ i386/include/mach/i386/exception.h \ i386/include/mach/i386/fp_reg.h \ @@ -2504,8 +2504,11 @@ AM_CCASFLAGS = # all that scruffy Mach code... Also see <http://savannah.gnu.org/task/?5726>. # We need the GNU-style inline -AM_CFLAGS = -fno-builtin-log -Wall -fgnu89-inline $(am__append_1) \ - $(am__append_3) $(am__append_124) + +# Much of the Mach code predates C99 and makes invalid assumptions about +# type punning. +AM_CFLAGS = -fno-builtin-log -Wall -fgnu89-inline -fno-strict-aliasing \ + $(am__append_1) $(am__append_3) $(am__append_124) AM_LDFLAGS = # @@ -2886,7 +2889,6 @@ liblinux_pcmcia_cs_wireless_a_SOURCES = $(am__append_110) @HOST_ix86_TRUE@include_mach_i386_HEADERS = \ @HOST_ix86_TRUE@ i386/include/mach/i386/asm.h \ @HOST_ix86_TRUE@ i386/include/mach/i386/boolean.h \ -@HOST_ix86_TRUE@ i386/include/mach/i386/disk.h \ @HOST_ix86_TRUE@ i386/include/mach/i386/eflags.h \ @HOST_ix86_TRUE@ i386/include/mach/i386/exception.h \ @HOST_ix86_TRUE@ i386/include/mach/i386/fp_reg.h \ diff --git a/configure b/configure index 9963749..5f29c10 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for GNU Mach 1.6+git20151211. +# Generated by GNU Autoconf 2.69 for GNU Mach 1.6+git20160114. # # Report bugs to <[email protected]>. # @@ -579,8 +579,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='GNU Mach' PACKAGE_TARNAME='gnumach' -PACKAGE_VERSION='1.6+git20151211' -PACKAGE_STRING='GNU Mach 1.6+git20151211' +PACKAGE_VERSION='1.6+git20160114' +PACKAGE_STRING='GNU Mach 1.6+git20160114' PACKAGE_BUGREPORT='[email protected]' PACKAGE_URL='' @@ -1595,7 +1595,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures GNU Mach 1.6+git20151211 to adapt to many kinds of systems. +\`configure' configures GNU Mach 1.6+git20160114 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1666,7 +1666,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of GNU Mach 1.6+git20151211:";; + short | recursive ) echo "Configuration of GNU Mach 1.6+git20160114:";; esac cat <<\_ACEOF @@ -2014,7 +2014,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -GNU Mach configure 1.6+git20151211 +GNU Mach configure 1.6+git20160114 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2106,7 +2106,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by GNU Mach $as_me 1.6+git20151211, which was +It was created by GNU Mach $as_me 1.6+git20160114, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2972,7 +2972,7 @@ fi # Define the identity of the package. PACKAGE='gnumach' - VERSION='1.6+git20151211' + VERSION='1.6+git20160114' # Some tools Automake needs. @@ -12128,7 +12128,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by GNU Mach $as_me 1.6+git20151211, which was +This file was extended by GNU Mach $as_me 1.6+git20160114, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -12199,7 +12199,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -GNU Mach config.status 1.6+git20151211 +GNU Mach config.status 1.6+git20160114 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/doc/mach.info b/doc/mach.info index f031e8c..995b99a 100644 --- a/doc/mach.info +++ b/doc/mach.info @@ -3,7 +3,7 @@ This is mach.info, produced by makeinfo version 6.0 from mach.texi. This file documents the GNU Mach microkernel. This is edition 0.4, last updated on 12 September 2015, of 'The GNU -Mach Reference Manual', for version 1.6+git20151211. +Mach Reference Manual', for version 1.6+git20160114. Copyright (C) 2001, 2002, 2006, 2007, 2008 Free Software Foundation, Inc. diff --git a/doc/mach.info-1 b/doc/mach.info-1 index 7a9fc50..b95106f 100644 --- a/doc/mach.info-1 +++ b/doc/mach.info-1 @@ -3,7 +3,7 @@ This is mach.info, produced by makeinfo version 6.0 from mach.texi. This file documents the GNU Mach microkernel. This is edition 0.4, last updated on 12 September 2015, of 'The GNU -Mach Reference Manual', for version 1.6+git20151211. +Mach Reference Manual', for version 1.6+git20160114. Copyright (C) 2001, 2002, 2006, 2007, 2008 Free Software Foundation, Inc. @@ -46,7 +46,7 @@ Main Menu This file documents the GNU Mach microkernel. This is edition 0.4, last updated on 12 September 2015, of 'The GNU -Mach Reference Manual', for version 1.6+git20151211. +Mach Reference Manual', for version 1.6+git20160114. Copyright (C) 2001, 2002, 2006, 2007, 2008 Free Software Foundation, Inc. diff --git a/doc/mach.info-2 b/doc/mach.info-2 index 0f3a6f8..4e8ee4a 100644 --- a/doc/mach.info-2 +++ b/doc/mach.info-2 @@ -3,7 +3,7 @@ This is mach.info, produced by makeinfo version 6.0 from mach.texi. This file documents the GNU Mach microkernel. This is edition 0.4, last updated on 12 September 2015, of 'The GNU -Mach Reference Manual', for version 1.6+git20151211. +Mach Reference Manual', for version 1.6+git20160114. Copyright (C) 2001, 2002, 2006, 2007, 2008 Free Software Foundation, Inc. diff --git a/doc/stamp-vti b/doc/stamp-vti index 9c241d5..69dbe4d 100644 --- a/doc/stamp-vti +++ b/doc/stamp-vti @@ -1,4 +1,4 @@ @set UPDATED 12 September 2015 @set UPDATED-MONTH September 2015 -@set EDITION 1.6+git20151211 -@set VERSION 1.6+git20151211 +@set EDITION 1.6+git20160114 +@set VERSION 1.6+git20160114 diff --git a/doc/version.texi b/doc/version.texi index 9c241d5..69dbe4d 100644 --- a/doc/version.texi +++ b/doc/version.texi @@ -1,4 +1,4 @@ @set UPDATED 12 September 2015 @set UPDATED-MONTH September 2015 -@set EDITION 1.6+git20151211 -@set VERSION 1.6+git20151211 +@set EDITION 1.6+git20160114 +@set VERSION 1.6+git20160114 diff --git a/i386/Makefrag.am b/i386/Makefrag.am index 4dd6a9f..ef393d5 100644 --- a/i386/Makefrag.am +++ b/i386/Makefrag.am @@ -240,7 +240,6 @@ include_mach_i386dir = $(includedir)/mach/i386 include_mach_i386_HEADERS = \ i386/include/mach/i386/asm.h \ i386/include/mach/i386/boolean.h \ - i386/include/mach/i386/disk.h \ i386/include/mach/i386/eflags.h \ i386/include/mach/i386/exception.h \ i386/include/mach/i386/fp_reg.h \ diff --git a/i386/i386/phys.c b/i386/i386/phys.c index d55bdd9..8681fba 100644 --- a/i386/i386/phys.c +++ b/i386/i386/phys.c @@ -77,7 +77,8 @@ pmap_copy_page( vm_offset_t dst) { vm_offset_t src_addr_v, dst_addr_v; - pmap_mapwindow_t *src_map, *dst_map; + pmap_mapwindow_t *src_map = NULL; + pmap_mapwindow_t *dst_map; boolean_t src_mapped = src >= phys_last_addr; boolean_t dst_mapped = dst >= phys_last_addr; assert(src != vm_page_fictitious_addr); diff --git a/i386/i386/vm_param.h b/i386/i386/vm_param.h index ffd91d6..6292ca2 100644 --- a/i386/i386/vm_param.h +++ b/i386/i386/vm_param.h @@ -56,9 +56,9 @@ /* Reserve mapping room for kmem. */ #ifdef MACH_XEN -#define VM_KERNEL_MAP_SIZE (224 * 1024 * 1024) +#define VM_KERNEL_MAP_SIZE (256 * 1024 * 1024) #else -#define VM_KERNEL_MAP_SIZE (192 * 1024 * 1024) +#define VM_KERNEL_MAP_SIZE (224 * 1024 * 1024) #endif /* The kernel virtual address space is actually located diff --git a/i386/i386at/disk.h b/i386/i386at/disk.h index 63d033f..c558375 100644 --- a/i386/i386at/disk.h +++ b/i386/i386at/disk.h @@ -52,53 +52,13 @@ WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. #ifndef _DISK_H_ #define _DISK_H_ -/* Grab the public part. */ -#include <mach/machine/disk.h> - - - -#define MAX_ALTENTS 253 /* Maximum # of slots for alts */ - /* allowed for in the table. */ - -#define ALT_SANITY 0xdeadbeef /* magic # to validate alt table */ - -struct alt_table { - u_short alt_used; /* # of alternates already assigned */ - u_short alt_reserved; /* # of alternates reserved on disk */ - long alt_base; /* 1st sector (abs) of the alt area */ - long alt_bad[MAX_ALTENTS]; /* list of bad sectors/tracks */ -}; - -struct alt_info { /* table length should be multiple of 512 */ - long alt_sanity; /* to validate correctness */ - u_short alt_version; /* to corroborate vintage */ - u_short alt_pad; /* padding for alignment */ - struct alt_table alt_trk; /* bad track table */ - struct alt_table alt_sec; /* bad sector table */ -}; -typedef struct alt_info altinfo_t; - #define V_NUMPAR 16 /* maximum number of partitions */ #define VTOC_SANE 0x600DDEEE /* Indicates a sane VTOC */ #define PDLOCATION 29 /* location of VTOC */ -#define BAD_BLK 0x80 /* needed for V_VERIFY */ -/* BAD_BLK moved from old hdreg.h */ - - -#define HDPDLOC 29 /* location of pdinfo/vtoc */ #define LBLLOC 1 /* label block for xxxbsd */ -/* Partition permission flags */ -#define V_OPEN 0x100 /* Partition open (for driver use) */ -#define V_VALID 0x200 /* Partition is valid to use */ - - - -/* Sanity word for the physical description area */ -#define VALID_PD 0xCA5E600D - struct localpartition { u_int p_flag; /*permision flags*/ long p_start; /*physical start sector no of partition*/ @@ -126,65 +86,4 @@ struct evtoc { char fill[512-352]; }; -union io_arg { - struct { - u_short ncyl; /* number of cylinders on drive */ - u_char nhead; /* number of heads/cyl */ - u_char nsec; /* number of sectors/track */ - u_short secsiz; /* number of bytes/sector */ - } ia_cd; /* used for Configure Drive cmd */ - struct { - u_short flags; /* flags (see below) */ - long bad_sector; /* absolute sector number */ - long new_sector; /* RETURNED alternate sect assigned */ - } ia_abs; /* used for Add Bad Sector cmd */ - struct { - u_short start_trk; /* first track # */ - u_short num_trks; /* number of tracks to format */ - u_short intlv; /* interleave factor */ - } ia_fmt; /* used for Format Tracks cmd */ - struct { - u_short start_trk; /* first track */ - char *intlv_tbl; /* interleave table */ - } ia_xfmt; /* used for the V_XFORMAT ioctl */ -}; - - -#define BOOTSZ 446 /* size of boot code in master boot block */ -#define FD_NUMPART 4 /* number of 'partitions' in fdisk table */ -#define ACTIVE 128 /* indicator of active partition */ -#define BOOT_MAGIC 0xAA55 /* signature of the boot record */ -#define UNIXOS 99 /* UNIX partition */ -#define BSDOS 165 -#define LINUXSWAP 130 -#define LINUXOS 131 -extern int OS; /* what partition we came from */ - -/* - * structure to hold the fdisk partition table - */ -struct ipart { - u_char bootid; /* bootable or not */ - u_char beghead; /* beginning head, sector, cylinder */ - u_char begsect; /* begcyl is a 10-bit number. High 2 bits */ - u_char begcyl; /* are in begsect. */ - u_char systid; /* OS type */ - u_char endhead; /* ending head, sector, cylinder */ - u_char endsect; /* endcyl is a 10-bit number. High 2 bits */ - u_char endcyl; /* are in endsect. */ - long relsect; /* first sector relative to start of disk */ - long numsect; /* number of sectors in partition */ -}; - -/* - * structure to hold master boot block in physical sector 0 of the disk. - * Note that partitions stuff can't be directly included in the structure - * because of lameo '386 compiler alignment design. - */ -struct mboot { /* master boot block */ - char bootinst[BOOTSZ]; - char parts[FD_NUMPART * sizeof(struct ipart)]; - u_short signature; -}; - #endif /* _DISK_H_ */ diff --git a/i386/i386at/lpr.c b/i386/i386at/lpr.c index edeef9f..73c4261 100644 --- a/i386/i386at/lpr.c +++ b/i386/i386at/lpr.c @@ -105,22 +105,24 @@ void lprattach(struct bus_device *dev) } int -lpropen(dev, flag, ior) -dev_t dev; -int flag; -io_req_t ior; +lpropen(dev_t dev, int flag, io_req_t ior) { -int unit = minor(dev); -struct bus_device *isai; -struct tty *tp; -u_short addr; - - if (unit >= NLPR || (isai = lprinfo[unit]) == 0 || isai->alive == 0) - return (D_NO_SUCH_DEVICE); + int unit = minor(dev); + struct bus_device *isai; + struct tty *tp; + u_short addr; + + if (unit >= NLPR) + return D_NO_SUCH_DEVICE; + + isai = lprinfo[unit]; + if (isai == NULL || !isai->alive) + return D_NO_SUCH_DEVICE; + tp = &lpr_tty[unit]; addr = (u_short) isai->address; tp->t_dev = dev; - tp->t_addr = *(caddr_t *)&addr; + tp->t_addr = addr; tp->t_oproc = lprstart; tp->t_state |= TS_WOPEN; tp->t_stop = lprstop; diff --git a/i386/include/mach/i386/disk.h b/i386/include/mach/i386/disk.h deleted file mode 100644 index 1bbbbdf..0000000 --- a/i386/include/mach/i386/disk.h +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Mach Operating System - * Copyright (c) 1991,1990,1989 Carnegie Mellon University - * All Rights Reserved. - * - * Permission to use, copy, modify and distribute this software and its - * documentation is hereby granted, provided that both the copyright - * notice and this permission notice appear in all copies of the - * software, derivative works or modified versions, and any portions - * thereof, and that both notices appear in supporting documentation. - * - * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" - * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR - * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. - * - * Carnegie Mellon requests users of this software to return to - * - * Software Distribution Coordinator or [email protected] - * School of Computer Science - * Carnegie Mellon University - * Pittsburgh PA 15213-3890 - * - * any improvements or extensions that they make and grant Carnegie Mellon - * the rights to redistribute these changes. - */ -/* - Copyright 1988, 1989 by Intel Corporation, Santa Clara, California. - - All Rights Reserved - -Permission to use, copy, modify, and distribute this software and -its documentation for any purpose and without fee is hereby -granted, provided that the above copyright notice appears in all -copies and that both the copyright notice and this permission notice -appear in supporting documentation, and that the name of Intel -not be used in advertising or publicity pertaining to distribution -of the software without specific, written prior permission. - -INTEL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE -INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, -IN NO EVENT SHALL INTEL BE LIABLE FOR ANY SPECIAL, INDIRECT, OR -CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN ACTION OF CONTRACT, -NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION -WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ - -/* - * disk.h - */ - -#ifndef _MACH_I386_DISK_H_ -#define _MACH_I386_DISK_H_ - -#if defined(__linux__) || defined(__masix__) -#define PART_DISK 4 /* partition number for entire disk */ -#else -#define PART_DISK 2 /* partition number for entire disk */ -#endif - - -/* driver ioctl() commands */ - -#define V_CONFIG _IOW('v',1,union io_arg)/* Configure Drive */ -#define V_REMOUNT _IO('v',2) /* Remount Drive */ -#define V_ADDBAD _IOW('v',3,union io_arg)/* Add Bad Sector */ -#define V_GETPARMS _IOR('v',4,struct disk_parms) /* Get drive/partition parameters */ -#define V_FORMAT _IOW('v',5,union io_arg)/* Format track(s) */ -#define V_PDLOC _IOR('v',6,int) /* Ask driver where pdinfo is on disk */ - -#define V_ABS _IOW('v',9,int) /* set a sector for an absolute addr */ -#define V_RDABS _IOW('v',10,struct absio)/* Read a sector at an absolute addr */ -#define V_WRABS _IOW('v',11,struct absio)/* Write a sector to absolute addr */ -#define V_VERIFY _IOWR('v',12,union vfy_io)/* Read verify sector(s) */ -#define V_XFORMAT _IO('v',13) /* Selectively mark sectors as bad */ -#define V_SETPARMS _IOW('v',14,int) /* Set drivers parameters */ - - -/* - * Data structure for the V_VERIFY ioctl - */ -union vfy_io { - struct { - long abs_sec; /* absolute sector number */ - u_short num_sec; /* number of sectors to verify */ - u_short time_flg; /* flag to indicate time the ops */ - }vfy_in; - struct { - long deltatime; /* duration of operation */ - u_short err_code; /* reason for failure */ - }vfy_out; -}; - - -/* data structure returned by the Get Parameters ioctl: */ -struct disk_parms { -/*00*/ char dp_type; /* Disk type (see below) */ - u_char dp_heads; /* Number of heads */ - u_short dp_cyls; /* Number of cylinders */ -/*04*/ u_char dp_sectors; /* Number of sectors/track */ - u_short dp_secsiz; /* Number of bytes/sector */ - /* for this partition: */ -/*08*/ u_short dp_ptag; /* Partition tag */ - u_short dp_pflag; /* Partition flag */ -/*0c*/ long dp_pstartsec; /* Starting absolute sector number */ -/*10*/ long dp_pnumsec; /* Number of sectors */ -/*14*/ u_char dp_dosheads; /* Number of heads */ - u_short dp_doscyls; /* Number of cylinders */ -/*18*/ u_char dp_dossectors; /* Number of sectors/track */ -}; - -/* Disk types for disk_parms.dp_type: */ -#define DPT_WINI 1 /* Winchester disk */ -#define DPT_FLOPPY 2 /* Floppy */ -#define DPT_OTHER 3 /* Other type of disk */ -#define DPT_NOTDISK 0 /* Not a disk device */ - -/* Data structure for V_RDABS/V_WRABS ioctl's */ -struct absio { - long abs_sec; /* Absolute sector number (from 0) */ - char *abs_buf; /* Sector buffer */ -}; - -#endif /* _MACH_I386_DISK_H_ */ diff --git a/i386/intel/pmap.c b/i386/intel/pmap.c index cf7a736..22e20c9 100644 --- a/i386/intel/pmap.c +++ b/i386/intel/pmap.c @@ -83,6 +83,7 @@ #include <i386/proc_reg.h> #include <i386/locore.h> #include <i386/model_dep.h> +#include <i386at/model_dep.h> #ifdef MACH_PSEUDO_PHYS #define WRITE_PTE(pte_p, pte_entry) *(pte_p) = pte_entry?pa_to_ma(pte_entry):0; diff --git a/kern/mach_clock.c b/kern/mach_clock.c index c6e2d9d..1817ce2 100644 --- a/kern/mach_clock.c +++ b/kern/mach_clock.c @@ -539,7 +539,7 @@ void mapable_time_init(void) if (kmem_alloc_wired(kernel_map, (vm_offset_t *) &mtime, PAGE_SIZE) != KERN_SUCCESS) panic("mapable_time_init"); - memset(mtime, 0, PAGE_SIZE); + memset((void *) mtime, 0, PAGE_SIZE); update_mapped_time(&time); } diff --git a/kern/slab.c b/kern/slab.c index 4f32c8e..8bc1b06 100644 --- a/kern/slab.c +++ b/kern/slab.c @@ -165,7 +165,7 @@ /* * Size of the VM submap from which default backend functions allocate. */ -#define KMEM_MAP_SIZE (96 * 1024 * 1024) +#define KMEM_MAP_SIZE (128 * 1024 * 1024) /* * Shift for the first kalloc cache size. diff --git a/linux/dev/glue/block.c b/linux/dev/glue/block.c index da4ef38..74126eb 100644 --- a/linux/dev/glue/block.c +++ b/linux/dev/glue/block.c @@ -1157,7 +1157,7 @@ out: { ipc_kobject_set (bd->port, IKO_NULL, IKOT_NONE); ipc_port_dealloc_kernel (bd->port); - *devp = IP_NULL; + *devp = (device_t) IP_NULL; } kfree ((vm_offset_t) bd, sizeof (struct block_data)); bd = NULL; @@ -1661,41 +1661,6 @@ device_get_status (void *d, dev_flavor_t flavor, dev_status_t status, *status_count = DEV_GET_RECORDS_COUNT; break; - case V_GETPARMS: - if (*status_count < (sizeof (struct disk_parms) / sizeof (int))) - return D_INVALID_OPERATION; - else - { - struct disk_parms *dp = status; - struct hd_geometry hg; - DECL_DATA; - - INIT_DATA(); - - if ((*bd->ds->fops->ioctl) (&td.inode, &td.file, - HDIO_GETGEO, (unsigned long)&hg)) - return D_INVALID_OPERATION; - - dp->dp_type = DPT_WINI; /* XXX: It may be a floppy... */ - dp->dp_heads = hg.heads; - dp->dp_cyls = hg.cylinders; - dp->dp_sectors = hg.sectors; - dp->dp_dosheads = hg.heads; - dp->dp_doscyls = hg.cylinders; - dp->dp_dossectors = hg.sectors; - dp->dp_secsiz = 512; /* XXX */ - dp->dp_ptag = 0; - dp->dp_pflag = 0; - - /* XXX */ - dp->dp_pstartsec = -1; - dp->dp_pnumsec = -1; - - *status_count = sizeof (struct disk_parms) / sizeof (int); - } - - break; - default: return D_INVALID_OPERATION; } diff --git a/linux/dev/include/linux/fs.h b/linux/dev/include/linux/fs.h index a2f9383..def2bc9 100644 --- a/linux/dev/include/linux/fs.h +++ b/linux/dev/include/linux/fs.h @@ -650,7 +650,7 @@ mark_buffer_uptodate (struct buffer_head *bh, int on) void mark_buffer_uptodate(struct buffer_head * bh, int on); #endif -extern inline void mark_buffer_clean(struct buffer_head * bh) +static inline void mark_buffer_clean(struct buffer_head * bh) { #ifdef MACH clear_bit (BH_Dirty, &bh->b_state); @@ -662,7 +662,7 @@ extern inline void mark_buffer_clean(struct buffer_head * bh) #endif } -extern inline void mark_buffer_dirty(struct buffer_head * bh, int flag) +static inline void mark_buffer_dirty(struct buffer_head * bh, int flag) { #ifdef MACH set_bit (BH_Dirty, &bh->b_state); diff --git a/linux/dev/include/linux/locks.h b/linux/dev/include/linux/locks.h index 72cf108..ae063fb 100644 --- a/linux/dev/include/linux/locks.h +++ b/linux/dev/include/linux/locks.h @@ -20,13 +20,13 @@ extern struct buffer_head *reuse_list; */ extern void __wait_on_buffer(struct buffer_head *); -extern inline void wait_on_buffer(struct buffer_head * bh) +static inline void wait_on_buffer(struct buffer_head * bh) { if (test_bit(BH_Lock, &bh->b_state)) __wait_on_buffer(bh); } -extern inline void lock_buffer(struct buffer_head * bh) +static inline void lock_buffer(struct buffer_head * bh) { while (set_bit(BH_Lock, &bh->b_state)) __wait_on_buffer(bh); @@ -42,20 +42,20 @@ void unlock_buffer(struct buffer_head *); */ extern void __wait_on_super(struct super_block *); -extern inline void wait_on_super(struct super_block * sb) +static inline void wait_on_super(struct super_block * sb) { if (sb->s_lock) __wait_on_super(sb); } -extern inline void lock_super(struct super_block * sb) +static inline void lock_super(struct super_block * sb) { if (sb->s_lock) __wait_on_super(sb); sb->s_lock = 1; } -extern inline void unlock_super(struct super_block * sb) +static inline void unlock_super(struct super_block * sb) { sb->s_lock = 0; wake_up(&sb->s_wait); diff --git a/linux/dev/include/linux/mm.h b/linux/dev/include/linux/mm.h index cd06137..b0c3ab0 100644 --- a/linux/dev/include/linux/mm.h +++ b/linux/dev/include/linux/mm.h @@ -234,7 +234,7 @@ extern mem_map_t * mem_map; #define __get_dma_pages(priority, order) __get_free_pages((priority),(order),1) extern unsigned long __get_free_pages(int priority, unsigned long gfporder, int dma); -extern inline unsigned long get_free_page(int priority) +static inline unsigned long get_free_page(int priority) { unsigned long page; diff --git a/linux/dev/init/main.c b/linux/dev/init/main.c index ecbd0b6..8737b62 100644 --- a/linux/dev/init/main.c +++ b/linux/dev/init/main.c @@ -193,7 +193,7 @@ alloc_contig_mem (unsigned size, unsigned limit, unsigned *bits, len; void *m; vm_page_t p, page_list, tail, prev; - vm_offset_t addr, max_addr; + vm_offset_t addr = 0, max_addr; if (size == 0) return (NULL); @@ -296,7 +296,7 @@ alloc_contig_mem (unsigned size, unsigned limit, kfree ((vm_offset_t) bits, bits_len); if (pages) *pages = page_list; - return phystokv(m); + return (void *) phystokv(m); } /* diff --git a/linux/src/drivers/net/e2100.c b/linux/src/drivers/net/e2100.c index 537295a..be4185a 100644 --- a/linux/src/drivers/net/e2100.c +++ b/linux/src/drivers/net/e2100.c @@ -68,7 +68,7 @@ static int e21_probe_list[] = {0x300, 0x280, 0x380, 0x220, 0}; #define E21_SAPROM 0x10 /* Offset to station address data. */ #define E21_IO_EXTENT 0x20 -extern inline void mem_on(short port, volatile char *mem_base, +static inline void mem_on(short port, volatile char *mem_base, unsigned char start_page ) { /* This is a little weird: set the shared memory window by doing a @@ -78,7 +78,7 @@ extern inline void mem_on(short port, volatile char *mem_base, outb(E21_MEM_ON, port + E21_MEM_ENABLE + E21_MEM_ON); } -extern inline void mem_off(short port) +static inline void mem_off(short port) { inb(port + E21_MEM_ENABLE); outb(0x00, port + E21_MEM_ENABLE); diff --git a/linux/src/include/asm-i386/termios.h b/linux/src/include/asm-i386/termios.h index 76551de..9f65b4d 100644 --- a/linux/src/include/asm-i386/termios.h +++ b/linux/src/include/asm-i386/termios.h @@ -61,7 +61,7 @@ struct termio { /* * Translate a "termio" structure into a "termios". Ugh. */ -extern inline void trans_from_termio(struct termio * termio, +static inline void trans_from_termio(struct termio * termio, struct termios * termios) { #define SET_LOW_BITS(x,y) (*(unsigned short *)(&x) = (y)) @@ -76,7 +76,7 @@ extern inline void trans_from_termio(struct termio * termio, /* * Translate a "termios" structure into a "termio". Ugh. */ -extern inline void trans_to_termio(struct termios * termios, +static inline void trans_to_termio(struct termios * termios, struct termio * termio) { termio->c_iflag = termios->c_iflag; diff --git a/linux/src/include/linux/interrupt.h b/linux/src/include/linux/interrupt.h index 5765260..0224475 100644 --- a/linux/src/include/linux/interrupt.h +++ b/linux/src/include/linux/interrupt.h @@ -43,14 +43,14 @@ enum { ISICOM_BH }; -extern inline void init_bh(int nr, void (*routine)(void)) +static inline void init_bh(int nr, void (*routine)(void)) { bh_base[nr] = routine; bh_mask_count[nr] = 0; bh_mask |= 1 << nr; } -extern inline void mark_bh(int nr) +static inline void mark_bh(int nr) { set_bit(nr, &bh_active); } @@ -59,13 +59,13 @@ extern inline void mark_bh(int nr) * These use a mask count to correctly handle * nested disable/enable calls */ -extern inline void disable_bh(int nr) +static inline void disable_bh(int nr) { bh_mask &= ~(1 << nr); bh_mask_count[nr]++; } -extern inline void enable_bh(int nr) +static inline void enable_bh(int nr) { if (!--bh_mask_count[nr]) bh_mask |= 1 << nr; @@ -75,13 +75,13 @@ extern inline void enable_bh(int nr) * start_bh_atomic/end_bh_atomic also nest * naturally by using a counter */ -extern inline void start_bh_atomic(void) +static inline void start_bh_atomic(void) { intr_count++; barrier(); } -extern inline void end_bh_atomic(void) +static inline void end_bh_atomic(void) { barrier(); intr_count--; diff --git a/linux/src/include/net/route.h b/linux/src/include/net/route.h index 7bf32d0..2af1a41 100644 --- a/linux/src/include/net/route.h +++ b/linux/src/include/net/route.h @@ -105,30 +105,30 @@ extern unsigned ip_rt_bh_mask; extern struct rtable *ip_rt_hash_table[RT_HASH_DIVISOR]; extern void rt_free(struct rtable * rt); -extern __inline__ void ip_rt_fast_lock(void) +static __inline__ void ip_rt_fast_lock(void) { atomic_inc(&ip_rt_lock); } -extern __inline__ void ip_rt_fast_unlock(void) +static __inline__ void ip_rt_fast_unlock(void) { atomic_dec(&ip_rt_lock); } -extern __inline__ void ip_rt_unlock(void) +static __inline__ void ip_rt_unlock(void) { if (atomic_dec_and_test(&ip_rt_lock) && ip_rt_bh_mask) ip_rt_run_bh(); } -extern __inline__ unsigned ip_rt_hash_code(__u32 addr) +static __inline__ unsigned ip_rt_hash_code(__u32 addr) { unsigned tmp = addr + (addr>>16); return (tmp + (tmp>>8)) & 0xFF; } -extern __inline__ void ip_rt_put(struct rtable * rt) +static __inline__ void ip_rt_put(struct rtable * rt) #ifndef MODULE { /* If this rtable entry is not in the cache, we'd better free @@ -142,9 +142,9 @@ extern __inline__ void ip_rt_put(struct rtable * rt) #endif #ifdef CONFIG_KERNELD -extern struct rtable * ip_rt_route(__u32 daddr, int local, struct device *dev); +static struct rtable * ip_rt_route(__u32 daddr, int local, struct device *dev); #else -extern __inline__ struct rtable * ip_rt_route(__u32 daddr, int local, struct device *dev) +static __inline__ struct rtable * ip_rt_route(__u32 daddr, int local, struct device *dev) #ifndef MODULE { struct rtable * rth; @@ -170,7 +170,7 @@ extern __inline__ struct rtable * ip_rt_route(__u32 daddr, int local, struct dev #endif #endif -extern __inline__ struct rtable * ip_check_route(struct rtable ** rp, __u32 daddr, +static __inline__ struct rtable * ip_check_route(struct rtable ** rp, __u32 daddr, int local, struct device *dev) { struct rtable * rt = *rp; diff --git a/linux/src/include/net/sock.h b/linux/src/include/net/sock.h index 7a3ec03..25a9044 100644 --- a/linux/src/include/net/sock.h +++ b/linux/src/include/net/sock.h @@ -559,7 +559,7 @@ extern struct sk_buff *sock_alloc_send_skb(struct sock *skb, * packet ever received. */ -extern __inline__ int sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb) +static __inline__ int sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb) { if (sk->rmem_alloc + skb->truesize >= sk->rcvbuf) return -ENOMEM; @@ -571,7 +571,7 @@ extern __inline__ int sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb) return 0; } -extern __inline__ int __sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb) +static __inline__ int __sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb) { if (sk->rmem_alloc + skb->truesize >= sk->rcvbuf) return -ENOMEM; @@ -587,7 +587,7 @@ extern __inline__ int __sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb) * Recover an error report and clear atomically */ -extern __inline__ int sock_error(struct sock *sk) +static __inline__ int sock_error(struct sock *sk) { int err=xchg(&sk->err,0); return -err; diff --git a/version.m4 b/version.m4 index 277c530..5d14353 100644 --- a/version.m4 +++ b/version.m4 @@ -1,4 +1,4 @@ m4_define([AC_PACKAGE_NAME],[GNU Mach]) -m4_define([AC_PACKAGE_VERSION],[1.6+git20151211]) +m4_define([AC_PACKAGE_VERSION],[1.6+git20160114]) m4_define([AC_PACKAGE_BUGREPORT],[[email protected]]) m4_define([AC_PACKAGE_TARNAME],[gnumach]) diff --git a/vm/vm_map.c b/vm/vm_map.c index cded22d..3a231de 100644 --- a/vm/vm_map.c +++ b/vm/vm_map.c @@ -2556,6 +2556,7 @@ kern_return_t vm_map_copyout( */ copy->cpy_hdr.nentries = 0; copy->cpy_hdr.entries_pageable = dst_map->hdr.entries_pageable; + rbtree_init(©->cpy_hdr.tree); vm_map_copy_first_entry(copy) = vm_map_copy_last_entry(copy) = vm_map_copy_to_entry(copy); @@ -4718,24 +4719,30 @@ kern_return_t vm_map_machine_attribute( /* * vm_map_print: [ debug ] */ -void vm_map_print(vm_map_t map) +void vm_map_print(db_expr_t addr, boolean_t have_addr, db_expr_t count, const char *modif) { + vm_map_t map; vm_map_entry_t entry; - iprintf("Task map 0x%X: pmap=0x%X,", + if (!have_addr) + map = current_thread()->task->map; + else + map = (vm_map_t)addr; + + iprintf("Map 0x%X: pmap=0x%X,", (vm_offset_t) map, (vm_offset_t) (map->pmap)); printf("ref=%d,nentries=%d,", map->ref_count, map->hdr.nentries); printf("version=%d\n", map->timestamp); - indent += 2; + indent += 1; for (entry = vm_map_first_entry(map); entry != vm_map_to_entry(map); entry = entry->vme_next) { static char *inheritance_name[3] = { "share", "copy", "none"}; iprintf("map entry 0x%X: ", (vm_offset_t) entry); - printf("start=0x%X, end=0x%X, ", + printf("start=0x%X, end=0x%X\n", (vm_offset_t) entry->vme_start, (vm_offset_t) entry->vme_end); - printf("prot=%X/%X/%s, ", + iprintf("prot=%X/%X/%s, ", entry->protection, entry->max_protection, inheritance_name[entry->inheritance]); @@ -4770,13 +4777,13 @@ void vm_map_print(vm_map_t map) if ((entry->vme_prev == vm_map_to_entry(map)) || (entry->vme_prev->object.vm_object != entry->object.vm_object)) { - indent += 2; + indent += 1; vm_object_print(entry->object.vm_object); - indent -= 2; + indent -= 1; } } } - indent -= 2; + indent -= 1; } /* @@ -4792,7 +4799,7 @@ void vm_map_copy_print(copy) printf("copy object 0x%x\n", copy); - indent += 2; + indent += 1; iprintf("type=%d", copy->type); switch (copy->type) { @@ -4846,6 +4853,6 @@ void vm_map_copy_print(copy) break; } - indent -= 2; + indent -= 1; } #endif /* MACH_KDB */ diff --git a/vm/vm_object.c b/vm/vm_object.c index dd63481..6666fcb 100644 --- a/vm/vm_object.c +++ b/vm/vm_object.c @@ -2923,13 +2923,14 @@ void vm_object_print( if (object == VM_OBJECT_NULL) return; - iprintf("Object 0x%X: size=0x%X", - (vm_offset_t) object, (vm_offset_t) object->size); - printf(", %d references, %d resident pages,", object->ref_count, - object->resident_page_count); + iprintf("Object 0x%X: size=0x%X, %d references", + (vm_offset_t) object, (vm_offset_t) object->size, + object->ref_count); + printf("\n"); + iprintf("%d resident pages,", object->resident_page_count); printf(" %d absent pages,", object->absent_count); printf(" %d paging ops\n", object->paging_in_progress); - indent += 2; + indent += 1; iprintf("memory object=0x%X (offset=0x%X),", (vm_offset_t) object->pager, (vm_offset_t) object->paging_offset); printf("control=0x%X, name=0x%X\n", @@ -2948,7 +2949,7 @@ void vm_object_print( (vm_offset_t) object->shadow, (vm_offset_t) object->shadow_offset); printf("copy=0x%X\n", (vm_offset_t) object->copy); - indent += 2; + indent += 1; if (vm_object_print_pages) { count = 0; @@ -2965,7 +2966,7 @@ void vm_object_print( if (count != 0) printf("\n"); } - indent -= 4; + indent -= 2; } #endif /* MACH_KDB */ diff --git a/vm/vm_object.h b/vm/vm_object.h index 3bfc67a..71c8545 100644 --- a/vm/vm_object.h +++ b/vm/vm_object.h @@ -62,7 +62,7 @@ typedef struct ipc_port * pager_request_t; */ struct vm_object { - queue_chain_t memq; /* Resident memory */ + queue_head_t memq; /* Resident memory */ decl_simple_lock_data(, Lock) /* Synchronization */ #if VM_OBJECT_DEBUG thread_t LockHolder; /* Thread holding Lock */ diff --git a/vm/vm_print.h b/vm/vm_print.h index eab534e..8a36d75 100644 --- a/vm/vm_print.h +++ b/vm/vm_print.h @@ -23,7 +23,8 @@ #include <machine/db_machdep.h> /* Debugging: print a map */ -extern void vm_map_print(vm_map_t); +extern void vm_map_print(db_expr_t addr, boolean_t have_addr, + db_expr_t count, const char *modif); /* Pretty-print a copy object for ddb. */ extern void vm_map_copy_print(const vm_map_copy_t); -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-hurd/gnumach.git
