12 changed files with 0 additions and 3151 deletions
@ -1,46 +0,0 @@ |
|||
# This file was generated automatically by configure. Do not edit.
|
|||
VPATH = . |
|||
links = |
|||
host_alias = sparc-sun-solaris |
|||
host_cpu = sparc |
|||
host_vendor = sun |
|||
host_os = solaris |
|||
target_alias = sparc-sun-solaris |
|||
target_cpu = sparc |
|||
target_vendor = sun |
|||
target_os = solaris |
|||
target_makefile_frag = ./config/mt-sparc |
|||
ALL=all.internal |
|||
# @(#)Makefile 5.17 (Berkeley) 5/11/90
|
|||
|
|||
#### host and target dependent Makefile fragments come in here.
|
|||
MACHINE=sparc |
|||
###
|
|||
|
|||
PROG= gprof |
|||
SRCS= gprof.c arcs.c dfn.c lookup.c ${MACHINE}.c hertz.c \
|
|||
printgprof.c printlist.c |
|||
LIBS = ../bfd/libbfd.a ../libiberty/libiberty.a |
|||
|
|||
OBJS= gprof.o arcs.o dfn.o lookup.o ${MACHINE}.o hertz.o \
|
|||
printgprof.o printlist.o |
|||
|
|||
CFLAGS= -I. -I../include -DMACHINE_H=\"${MACHINE}.h\" ${TCFLAGS} ${HCFLAGS} |
|||
.c.o: |
|||
$(CC) -c $(CFLAGS) $< |
|||
|
|||
all: ${PROG} |
|||
|
|||
.PHONY: check |
|||
check: |
|||
|
|||
beforeinstall: |
|||
install -c -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
|
|||
${.CURDIR}/gprof.flat ${.CURDIR}/gprof.callg \
|
|||
${DESTDIR}/usr/share/misc |
|||
|
|||
$(PROG): $(OBJS) |
|||
$(CC) $(CFLAGS) $(OBJS) -o $(PROG) $(LIBS) |
|||
|
|||
clean: |
|||
-rm -f $(OBJS) core gprof nohup.out |
|||
@ -1,219 +0,0 @@ |
|||
#include <stdio.h> |
|||
#include "gprof.h" |
|||
|
|||
void |
|||
flat_blurb (file) |
|||
FILE *file; |
|||
{ |
|||
fputs("\n\
|
|||
% the percentage of the total running time of the\n\ |
|||
time program used by this function.\n\ |
|||
\n\ |
|||
cumulative a running sum of the number of seconds accounted\n\ |
|||
seconds for by this function and those listed above it.\n\ |
|||
\n\ |
|||
self the number of seconds accounted for by this\n\ |
|||
seconds function alone. This is the major sort for this\n\ |
|||
listing.\n\ |
|||
\n\ |
|||
calls the number of times this function was invoked, if\n\ |
|||
this function is profiled, else blank.\n\ |
|||
\n\ |
|||
self the average number of milliseconds spent in this\n\ |
|||
ms/call function per call, if this function is profiled,\n\ |
|||
else blank.\n\ |
|||
\n\ |
|||
total the average number of milliseconds spent in this\n\ |
|||
ms/call function and its descendents per call, if this \n\ |
|||
function is profiled, else blank.\n\ |
|||
\n\ |
|||
name the name of the function. This is the minor sort\n\ |
|||
for this listing. The index shows the location of\n\ |
|||
the function in the gprof listing. If the index is\n\ |
|||
in parenthesis it shows where it would appear in\n\ |
|||
the gprof listing if it were to be printed.\n\ |
|||
\n", file); |
|||
} |
|||
|
|||
static char *callg_blurb_bsd = "\n\
|
|||
\n\ |
|||
\n\ |
|||
call graph profile:\n\ |
|||
The sum of self and descendents is the major sort\n\ |
|||
for this listing.\n\ |
|||
\n\ |
|||
function entries:\n\ |
|||
\n\ |
|||
index the index of the function in the call graph\n\ |
|||
listing, as an aid to locating it (see below).\n\ |
|||
\n\ |
|||
%time the percentage of the total time of the program\n\ |
|||
accounted for by this function and its\n\ |
|||
descendents.\n\ |
|||
\n\ |
|||
self the number of seconds spent in this function\n\ |
|||
itself.\n\ |
|||
\n\ |
|||
descendents\n\ |
|||
the number of seconds spent in the descendents of\n\ |
|||
this function on behalf of this function.\n\ |
|||
\n\ |
|||
called the number of times this function is called (other\n\ |
|||
than recursive calls).\n\ |
|||
\n\ |
|||
self the number of times this function calls itself\n\ |
|||
recursively.\n\ |
|||
\n\ |
|||
name the name of the function, with an indication of\n\ |
|||
its membership in a cycle, if any.\n\ |
|||
\n\ |
|||
index the index of the function in the call graph\n\ |
|||
listing, as an aid to locating it.\n\ |
|||
\n\ |
|||
\n\ |
|||
\n\ |
|||
parent listings:\n\ |
|||
\n\ |
|||
self* the number of seconds of this function's self time\n\ |
|||
which is due to calls from this parent.\n\ |
|||
\n\ |
|||
descendents*\n\ |
|||
the number of seconds of this function's\n\ |
|||
descendent time which is due to calls from this\n\ |
|||
parent.\n\ |
|||
\n\ |
|||
called** the number of times this function is called by\n\ |
|||
this parent. This is the numerator of the\n\ |
|||
fraction which divides up the function's time to\n\ |
|||
its parents.\n\ |
|||
\n\ |
|||
total* the number of times this function was called by\n\ |
|||
all of its parents. This is the denominator of\n\ |
|||
the propagation fraction.\n\ |
|||
\n\ |
|||
parents the name of this parent, with an indication of the\n\ |
|||
parent's membership in a cycle, if any.\n\ |
|||
\n\ |
|||
index the index of this parent in the call graph\n\ |
|||
listing, as an aid in locating it.\n\ |
|||
\n\ |
|||
\n\ |
|||
\n\ |
|||
children listings:\n\ |
|||
\n\ |
|||
self* the number of seconds of this child's self time\n\ |
|||
which is due to being called by this function.\n\ |
|||
\n\ |
|||
descendent*\n\ |
|||
the number of seconds of this child's descendent's\n\ |
|||
time which is due to being called by this\n\ |
|||
function.\n\ |
|||
\n\ |
|||
called** the number of times this child is called by this\n\ |
|||
function. This is the numerator of the\n\ |
|||
propagation fraction for this child.\n\ |
|||
\n\ |
|||
total* the number of times this child is called by all\n\ |
|||
functions. This is the denominator of the\n\ |
|||
propagation fraction.\n\ |
|||
\n\ |
|||
children the name of this child, and an indication of its\n\ |
|||
membership in a cycle, if any.\n\ |
|||
\n\ |
|||
index the index of this child in the call graph listing,\n\ |
|||
as an aid to locating it.\n\ |
|||
\n\ |
|||
\n\ |
|||
\n\ |
|||
* these fields are omitted for parents (or\n\ |
|||
children) in the same cycle as the function. If\n\ |
|||
the function (or child) is a member of a cycle,\n\ |
|||
the propagated times and propagation denominator\n\ |
|||
represent the self time and descendent time of the\n\ |
|||
cycle as a whole.\n\ |
|||
\n\ |
|||
** static-only parents and children are indicated\n\ |
|||
by a call count of 0.\n\ |
|||
\n\ |
|||
\n\ |
|||
\n\ |
|||
cycle listings:\n\ |
|||
the cycle as a whole is listed with the same\n\ |
|||
fields as a function entry. Below it are listed\n\ |
|||
the members of the cycle, and their contributions\n\ |
|||
to the time and call counts of the cycle.\n\ |
|||
\n"; |
|||
|
|||
static char *callg_blurb_fsf = "\n\
|
|||
This table describes the call tree of the program, and was sorted by\n\ |
|||
the total amount of time spent in each function and its children.\n\n\ |
|||
Each entry in this table consists of several lines. The line with the\n\ |
|||
index number at the left hand margin lists the current function.\n\ |
|||
The lines above it list the functions that called this function,\n\ |
|||
and the lines below it list the functions this one called.\n\ |
|||
This line lists:\n\ |
|||
index A unique number given to each element of the table.\n\ |
|||
Index numbers are sorted numerically.\n\ |
|||
The index number is printed next to every function name so\n\ |
|||
it is easier to look up where the function in the table.\n\n\ |
|||
% time This is the percentage of the `total' time that was spent\n\ |
|||
in this function and its children. Note that due to\n\ |
|||
different viewpoints, functions excluded by options, etc,\n\ |
|||
these numbers will NOT add up to 100%.\n\n\ |
|||
self This is the total amount of time spent in this function.\n\n\ |
|||
children This is the total amount of time propagated into this\n\ |
|||
function by its children.\n\n\ |
|||
called This is the number of times the function was called.\n\ |
|||
If the function called itself recursively, the number\n\ |
|||
only includes non-recursive calls, and is followed by\n\ |
|||
a `+' and the number of recursive calls.\n\n\ |
|||
name The name of the current function. The index number is\n\ |
|||
printed after it. If the function is a member of a\n\ |
|||
cycle, the cycle number is printed between the\n\ |
|||
function's name and the index number.\n\n\n\ |
|||
For the function's parents, the fields have the following meanings:\n\n\ |
|||
self This is the amount of time that was propagated directly\n\ |
|||
from the function into this parent.\n\n\ |
|||
children This is the amount of time that was propagated from\n\ |
|||
the function's children into this parent.\n\n\ |
|||
called This is the number of times this parent called the\n\ |
|||
function `/' the total number of times the function\n\ |
|||
was called. Recursive calls to the function are not\n\ |
|||
included in the number after the `/'.\n\n\ |
|||
name This is the name of the parent. The parent's index\n\ |
|||
number is printed after it. If the parent is a\n\ |
|||
member of a cycle, the cycle number is printed between\n\ |
|||
the name and the index number.\n\n\ |
|||
If the parents of the function cannot be determined, the word\n\ |
|||
`<spontaneous>' is printed in the `name' field, and all the other\n\ |
|||
fields are blank.\n\n\ |
|||
For the function's children, the fields have the following meanings:\n\n\ |
|||
self This is the amount of time that was propagated directly\n\ |
|||
from the child into the function.\n\n\ |
|||
children This is the amount of time that was propagated from the\n\ |
|||
child's children to the function.\n\n\ |
|||
called This is the number of times the function called\n\ |
|||
this child `/' the total number of times the child\n\ |
|||
was called. Recursive calls by the child are not\n\ |
|||
listed in the number after the `/'.\n\n\ |
|||
name This is the name of the child. The child's index\n\ |
|||
number is printed after it. If the child is a\n\ |
|||
member of a cycle, the cycle number is printed\n\ |
|||
between the name and the index number.\n\n\ |
|||
If there are any cycles (circles) in the call graph, there is an\n\ |
|||
entry for the cycle-as-a-whole. This entry shows who called the\n\ |
|||
cycle (as parents) and the members of the cycle (as children.)\n\ |
|||
The `+' recursive calls entry shows the number of function calls that\n\ |
|||
were internal to the cycle, and the calls entry for each member shows,\n\ |
|||
for that member, how many times it was called from other members of\n\ |
|||
the cycle.\n\n"; |
|||
|
|||
void |
|||
callg_blurb (file) |
|||
FILE *file; |
|||
{ |
|||
if (bsd_style_output) |
|||
fputs(callg_blurb_bsd, file); |
|||
else |
|||
fputs(callg_blurb_fsf, file); |
|||
} |
|||
@ -1 +0,0 @@ |
|||
MACHINE=i386 |
|||
@ -1 +0,0 @@ |
|||
MACHINE=sparc |
|||
@ -1,678 +0,0 @@ |
|||
#!/bin/sh |
|||
# Please do not edit this file. It is generated automatically from |
|||
# configure.in and a configure template. |
|||
configdirs= |
|||
|
|||
# the debugger. |
|||
#set -x |
|||
|
|||
#!/bin/sh |
|||
|
|||
# Configuration script template |
|||
# Copyright (C) 1988, 1990, 1991 Free Software Foundation, Inc. |
|||
|
|||
#This file is part of GNU. |
|||
|
|||
#GNU CC is free software; you can redistribute it and/or modify |
|||
#it under the terms of the GNU General Public License as published by |
|||
#the Free Software Foundation; either version 1, or (at your option) |
|||
#any later version. |
|||
|
|||
#GNU CC is distributed in the hope that it will be useful, |
|||
#but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
#GNU General Public License for more details. |
|||
|
|||
#You should have received a copy of the GNU General Public License |
|||
#along with GNU CC; see the file COPYING. If not, write to |
|||
#the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. |
|||
|
|||
# $Id$ |
|||
|
|||
# |
|||
# Shell script to create proper links to machine-dependent files in |
|||
# preparation for compilation. |
|||
# |
|||
# If configure succeeds, it leaves its status in config.status. |
|||
# If configure fails after disturbing the status quo, |
|||
# config.status is removed. |
|||
# |
|||
|
|||
remove=rm |
|||
hard_link=ln |
|||
symbolic_link='ln -s' |
|||
|
|||
#for Test |
|||
#remove="echo rm" |
|||
#hard_link="echo ln" |
|||
#symbolic_link="echo ln -s" |
|||
|
|||
progname=$0 |
|||
|
|||
# clear some things potentially inherited from environment. |
|||
|
|||
ansi= |
|||
clib= |
|||
defaulttargets= |
|||
destdir= |
|||
fatal= |
|||
hostsubdir= |
|||
norecurse= |
|||
removing= |
|||
srcdir= |
|||
srctrigger= |
|||
target= |
|||
targets= |
|||
targetsubdir= |
|||
template= |
|||
verbose= |
|||
|
|||
for arg in $*; |
|||
do |
|||
case ${arg} in |
|||
-ansi | +ansi) |
|||
ansi=true |
|||
;; |
|||
-clib | +c*) |
|||
clib=clib |
|||
;; |
|||
-destdir=* | +destdir=* | +destdi=* | +destd=* | +dest=* | +des=* | +de=* | +d=*) |
|||
destdir=`echo ${arg} | sed 's/[+-]d[a-z]*=//'` |
|||
;; |
|||
-forcesubdirs | +forcesubdirs | +forcesubdir | +forcesubdi | +forcesubd \ |
|||
| +forcesub | +forcesu | +forces | +force | +forc | +for | +fo | +f) |
|||
forcesubdirs=${arg} |
|||
;; |
|||
-languages=* | +languages=* | +language=* | +languag=* \ |
|||
| +langua=* | +langu=* | +lang=* | +lan=* | +la=* \ |
|||
| +l=*) |
|||
languages="${languages} `echo ${arg} | sed 's/[+-]l[a-z]*=//'`" |
|||
;; |
|||
-gas | +gas | +ga | +g) |
|||
gas=yes |
|||
;; |
|||
-help | +h | +help) |
|||
fatal=true |
|||
;; |
|||
-nfp | +nfp | +nf | +n) |
|||
nfp=yes |
|||
;; |
|||
-norecurse | +norecurse) |
|||
norecurse=true |
|||
;; |
|||
-rm | +rm) |
|||
removing=${arg} |
|||
;; |
|||
# -srcdir=* | +srcdir=* | +srcdi=* | +srcd=* | +src=* | +sr=* | +s=*) |
|||
# srcdir=`echo ${arg} | sed 's/[+-]s[a-z]*=//'` |
|||
# ;; |
|||
-target=* | +target=* | +targe=* | +targ=* | +tar=* | +ta=* | +t=*) |
|||
if [ -n "${targets}" ] ; then |
|||
forcesubdirs="+forcesubdirs" |
|||
fi |
|||
|
|||
newtargets="${targets} `echo ${arg} | sed 's/[+-]t[a-z]*=//'`" |
|||
targets="${newtargets}" |
|||
;; |
|||
-template=* | +template=*) |
|||
template=`echo ${arg} | sed 's/[+-]template=//'` |
|||
;; |
|||
+verbose | +verbos | +verbo | +verb | +ver | +ve | +v) |
|||
verbose=${arg} |
|||
;; |
|||
-* | +*) |
|||
(echo ; |
|||
echo "Unrecognized option: \"${arg}\"". ; |
|||
echo) 1>&2 |
|||
fatal=true |
|||
;; |
|||
*) |
|||
if [ -n "${hosts}" ] ; then |
|||
forcesubdirs="+forcesubdirs" |
|||
fi |
|||
|
|||
newhosts="${hosts} ${arg}" |
|||
hosts=${newhosts} |
|||
;; |
|||
esac |
|||
done |
|||
|
|||
if [ -n "${verbose}" ] ; then |
|||
echo `pwd`/configure $* |
|||
echo targets=\"${targets}\" |
|||
fi |
|||
|
|||
# process host and target only if not rebuilding configure itself or removing. |
|||
if [ -z "${template}" -a -z "${removing}" -a -z "${fatal}" ] ; then |
|||
# Complain if an arg is missing |
|||
if [ -z "${hosts}" ] ; then |
|||
(echo ; |
|||
echo "configure: No HOST specified." ; |
|||
echo) 2>&1 |
|||
fatal=true |
|||
fi |
|||
fi |
|||
|
|||
if [ -n "${fatal}" -o "${hosts}" = "help" ] ; then |
|||
(echo "Usage: configure HOST" ; |
|||
echo ; |
|||
echo "Options: [defaults in brackets]" ; |
|||
echo " +ansi configure w/ANSI library. [no ansi lib]" ; |
|||
echo " +destdir=MYDIR configure for installation into MYDIR. [/usr/local]" ; |
|||
echo " +forcesubdirs configure in subdirectories. [in source directories]" ; |
|||
echo " +lang=LANG configure to build LANG. [gcc]" ; |
|||
echo " +help print this message. [normal config]" ; |
|||
echo " +gas configure the compilers for use with gas. [native as]" ; |
|||
echo " +nfp configure the compilers default to soft floating point. [hard float]" ; |
|||
echo " +norecurse configure this directory only. [recurse]" ; |
|||
echo " +rm remove this configuration. [build a configuration]" ; |
|||
echo " +target=TARGET configure for TARGET. [TARGET = HOST]" ; |
|||
echo " +template=TEM rebuild configure using TEM. [normal config]" ; |
|||
echo ; |
|||
echo "Where HOST and TARGET are something like \"vax\", \"sun3\", \"encore\", etc." ; |
|||
echo "Asking for more than one \"+target\" implies \"+forcesubdirs\". Any other" ; |
|||
echo "options given will apply to all targets.") 1>&2 |
|||
|
|||
if [ -r config.status ] ; then |
|||
cat config.status |
|||
fi |
|||
|
|||
exit 1 |
|||
fi |
|||
|
|||
#### configure.in common parts come in here. |
|||
# This file is a shell script that supplies the information necessary |
|||
# to tailor a template configure script into the configure script |
|||
# appropriate for this directory. For more information, check any |
|||
# existing configure script. |
|||
|
|||
srctrigger=gprof.c |
|||
srcname="gprof" |
|||
|
|||
## end of common part. |
|||
|
|||
# are we rebuilding config itself? |
|||
if [ -n "${template}" ] ; then |
|||
if [ ! -r ${template} ] ; then |
|||
echo "Can't find template ${template}." |
|||
exit 1 |
|||
fi |
|||
|
|||
# prep the template |
|||
sed -e '/^#### configure.in common parts come in here.$/,/^## end of common part.$/c\ |
|||
#### configure.in common parts come in here.\ |
|||
## end of common part.' \ |
|||
-e '/^#### configure.in per-host parts come in here.$/,/^## end of per-host part.$/c\ |
|||
#### configure.in per-host parts come in here.\ |
|||
## end of per-host part.' \ |
|||
-e '/^#### configure.in per-target parts come in here.$/,/^## end of per-target part.$/c\ |
|||
#### configure.in per-target parts come in here.\ |
|||
## end of per-target part.' \ |
|||
< ${template} > template.new |
|||
|
|||
if [ -r configure.in ] ; then |
|||
if [ -z "`grep '^# per\-host:' configure.in`" ] ; then |
|||
echo `pwd`/configure.in has no "per-host:" line. |
|||
exit 1 |
|||
fi |
|||
|
|||
if [ -z "`grep '^# per\-target:' configure.in`" ] ; then |
|||
echo `pwd`/configure.in has no "per-target:" line. |
|||
exit 1 |
|||
fi |
|||
|
|||
# split configure.in into common, per-host, and per-target parts |
|||
sed -e '/^# per\-host:/,$d' configure.in > configure.com |
|||
sed -e '1,/^# per\-host:/d' -e '/^# per\-target:/,$d' configure.in > configure.hst |
|||
sed -e '1,/^# per\-target:/d' configure.in > configure.tgt |
|||
|
|||
# and insert them |
|||
sed -e '/^#### configure.in common parts come in here.$/ r configure.com' \ |
|||
-e '/^#### configure.in per\-host parts come in here.$/ r configure.hst' \ |
|||
-e '/^#### configure.in per\-target parts come in here.$/ r configure.tgt' \ |
|||
template.new > configure.new |
|||
|
|||
rm -f configure.com configure.tgt configure.hst |
|||
else |
|||
echo Warning: no configure.in in `pwd` |
|||
cat ${template} >> configure |
|||
fi |
|||
|
|||
chmod a+x configure.new |
|||
rm template.new |
|||
# mv configure configure.old |
|||
mv configure.new configure |
|||
echo Rebuilt configure in `pwd` |
|||
|
|||
if [ -z "${norecurse}" ] ; then |
|||
while [ -n "${configdirs}" ] ; do |
|||
# set configdir to car of configdirs, configdirs to cdr of configdirs |
|||
set ${configdirs}; configdir=$1; shift; configdirs=$* |
|||
|
|||
if [ "`echo ${configdir}.*`" != "${configdir}.*" ] ; then |
|||
targetspecificdirs=${configdir}.* |
|||
else |
|||
targetspecificdirs= |
|||
fi |
|||
|
|||
for i in ${configdir} ${targetspecificdirs} ; do |
|||
if [ -d $i ] ; then |
|||
if [ -r $i/configure ] ; then |
|||
(cd $i ; |
|||
./configure +template=${template} ${verbose}) |
|||
else |
|||
echo No configure script in `pwd`/$i |
|||
fi |
|||
else |
|||
echo Warning: directory $i is missing. |
|||
fi |
|||
done |
|||
done |
|||
fi |
|||
|
|||
exit 0 |
|||
fi |
|||
|
|||
# some sanity checks on configure.in |
|||
if [ -z "${srctrigger}" ] ; then |
|||
echo srctrigger not set in configure.in. `pwd` not configured. |
|||
exit 1 |
|||
fi |
|||
|
|||
for host in ${hosts} ; do |
|||
# Default other arg |
|||
if [ -z "${targets}" -o -n "${defaulttargets}" ] ; then |
|||
targets=${host} |
|||
defaulttargets=true |
|||
fi |
|||
|
|||
host_makefile_frag=config/hmake-${host} |
|||
|
|||
#### configure.in per-host parts come in here. |
|||
|
|||
## end of per-host part. |
|||
|
|||
|
|||
for target in ${targets} ; do |
|||
|
|||
if [ -n "${verbose}" ] ; then |
|||
echo host \= \"${host}\", target \= \"${target}\". |
|||
fi |
|||
|
|||
target_makefile_frag=config/tmake-${target} |
|||
|
|||
#### configure.in per-target parts come in here. |
|||
|
|||
files= |
|||
links= |
|||
## end of per-target part. |
|||
|
|||
# Temporarily, we support only direct subdir builds. |
|||
hostsubdir=Host-${host} |
|||
targetsubdir=Target-${target} |
|||
|
|||
if [ -n "${removing}" ] ; then |
|||
if [ -n "${forcesubdirs}" ] ; then |
|||
if [ -d "${hostsubdir}" ] ; then |
|||
rm -rf ${hostsubdir}/${targetsubdir} |
|||
|
|||
if [ -z "`(ls ${hostsubdir}) 2>&1 | grep Target-`" ] ; then |
|||
rm -rf ${hostsubdir} |
|||
fi |
|||
else |
|||
echo Warning: no `pwd`/${hostsubdir} to remove. |
|||
fi |
|||
else |
|||
rm -f Makefile config.status ${links} |
|||
fi |
|||
else |
|||
if [ -n "${forcesubdirs}" ] ; then |
|||
# check for existing status before allowing forced subdirs. |
|||
if [ -f Makefile ] ; then |
|||
echo "Makefile already exists in source directory. `pwd` not configured." |
|||
exit 1 |
|||
fi |
|||
|
|||
if [ ! -d ${hostsubdir} ] ; then mkdir ${hostsubdir} ; fi |
|||
cd ${hostsubdir} |
|||
|
|||
if [ ! -d ${targetsubdir} ] ; then mkdir ${targetsubdir} ; fi |
|||
cd ${targetsubdir} |
|||
|
|||
srcdir=../.. |
|||
else |
|||
# if not subdir builds, then make sure none exist. |
|||
if [ -n "`(ls .) 2>&1 | grep Host-`" ] ; then |
|||
echo "Configured subdirs exist. `pwd` not configured." |
|||
exit 1 |
|||
fi |
|||
fi |
|||
|
|||
# Find the source files, if location was not specified. |
|||
if [ -z "${srcdir}" ] ; then |
|||
srcdirdefaulted=1 |
|||
srcdir=. |
|||
if [ -n "${srctrigger}" -a ! -r ${srctrigger} ] ; then |
|||
srcdir=.. |
|||
fi |
|||
fi |
|||
|
|||
if [ -n "${srctrigger}" -a ! -r ${srcdir}/${srctrigger} ] ; then |
|||
if [ -z "${srcdirdefaulted}" ] ; then |
|||
echo "${progname}: Can't find ${srcname} sources in `pwd`/${srcdir}" 1>&2 |
|||
else |
|||
echo "${progname}: Can't find ${srcname} sources in `pwd`/. or `pwd`/.." 1>&2 |
|||
fi |
|||
|
|||
echo \(At least ${srctrigger} is missing.\) 1>&2 |
|||
exit 1 |
|||
fi |
|||
|
|||
# Set up the list of links to be made. |
|||
# ${links} is the list of link names, and ${files} is the list of names to link to. |
|||
|
|||
# Make the links. |
|||
while [ -n "${files}" ] ; do |
|||
# set file to car of files, files to cdr of files |
|||
set ${files}; file=$1; shift; files=$* |
|||
set ${links}; link=$1; shift; links=$* |
|||
|
|||
if [ ! -r ${srcdir}/${file} ] ; then |
|||
echo "${progname}: cannot create a link \"${link}\"," 1>&2 |
|||
echo "since the file \"${file}\" does not exist." 1>&2 |
|||
exit 1 |
|||
fi |
|||
|
|||
${remove} -f ${link} |
|||
rm -f config.status |
|||
# Make a symlink if possible, otherwise try a hard link |
|||
${symbolic_link} ${srcdir}/${file} ${link} 2>/dev/null || ${hard_link} ${srcdir}/${file} ${link} |
|||
|
|||
if [ ! -r ${link} ] ; then |
|||
echo "${progname}: unable to link \"${link}\" to \"${srcdir}/${file}\"." 1>&2 |
|||
exit 1 |
|||
fi |
|||
echo "Linked \"${link}\" to \"${srcdir}/${file}\"." |
|||
done |
|||
|
|||
# Create a .gdbinit file which runs the one in srcdir |
|||
# and tells GDB to look there for source files. |
|||
|
|||
case ${srcdir} in |
|||
.) |
|||
;; |
|||
*) |
|||
echo "dir ." > .gdbinit |
|||
echo "dir ${srcdir}" >> .gdbinit |
|||
echo "source ${srcdir}/.gdbinit" >> .gdbinit |
|||
;; |
|||
esac |
|||
|
|||
# Install a makefile, and make it set VPATH |
|||
# if necessary so that the sources are found. |
|||
# Also change its value of srcdir. |
|||
|
|||
# FIXME-someday: This business of always writing to .tem and mv back |
|||
# is so that I don't screw things up while developing. Once this |
|||
# template is stable, these should be optimized. xoxorich. |
|||
|
|||
# Define macro CROSS_COMPILE in compilation if this is a cross-compiler. |
|||
if [ "${host}" != "${target}" ] ; then |
|||
echo "CROSS=-DCROSS_COMPILE" > Makefile |
|||
echo "ALL=start.encap" >> Makefile |
|||
else |
|||
echo "ALL=all.internal" > Makefile |
|||
fi |
|||
|
|||
# set target, host, VPATH |
|||
echo "host = ${host}" >> Makefile |
|||
echo "target = ${target}" >> Makefile |
|||
|
|||
if [ -n "${forcesubdirs}" ] ; then |
|||
echo "subdir = /${hostsubdir}/${targetsubdir}" >> Makefile |
|||
else |
|||
echo "subdir =" >> Makefile |
|||
fi |
|||
|
|||
# echo "workdir = `pwd`" >> Makefile |
|||
echo "VPATH = ${srcdir}" >> Makefile |
|||
|
|||
# add Makefile.in |
|||
cat ${srcdir}/Makefile.in >> Makefile |
|||
|
|||
# and shake thoroughly. |
|||
# Conditionalize the makefile for this host. |
|||
if [ -f ${srcdir}/${host_makefile_frag} ] ; then |
|||
sed -e "/^####/ r ${srcdir}/${host_makefile_frag}" Makefile > Makefile.tem |
|||
mv Makefile.tem Makefile |
|||
fi |
|||
|
|||
# Conditionalize the makefile for this target. |
|||
if [ -f ${srcdir}/${target_makefile_frag} ] ; then |
|||
sed -e "/^####/ r ${srcdir}/${target_makefile_frag}" Makefile > Makefile.tem |
|||
mv Makefile.tem Makefile |
|||
fi |
|||
|
|||
# set srcdir |
|||
sed "s@^srcdir = \.@srcdir = ${srcdir}@" Makefile > Makefile.tem |
|||
mv Makefile.tem Makefile |
|||
|
|||
# set destdir |
|||
if [ -n "${destdir}" ] ; then |
|||
sed "s:^destdir =.*$:destdir = ${destdir}:" Makefile > Makefile.tem |
|||
mv Makefile.tem Makefile |
|||
fi |
|||
|
|||
# Remove all formfeeds, since some Makes get confused by them. |
|||
sed "s///" Makefile >> Makefile.tem |
|||
mv Makefile.tem Makefile |
|||
|
|||
# reset SUBDIRS |
|||
sed "s:^SUBDIRS =.*$:SUBDIRS = ${configdirs}:" Makefile > Makefile.tem |
|||
mv Makefile.tem Makefile |
|||
|
|||
# reset NONSUBDIRS |
|||
sed "s:^NONSUBDIRS =.*$:NONSUBDIRS = ${noconfigdirs}:" Makefile > Makefile.tem |
|||
mv Makefile.tem Makefile |
|||
|
|||
using= |
|||
if [ -f ${srcdir}/${host_makefile_frag} ] ; then |
|||
using=" using \"${host_makefile_frag}\"" |
|||
fi |
|||
|
|||
if [ -f ${srcdir}/${target_makefile_frag} ] ; then |
|||
if [ -z "${using}" ] ; then |
|||
andusing=" using \"${target_makefile_frag}\"" |
|||
else |
|||
andusing="${using} and \"${target_makefile_frag}\"" |
|||
fi |
|||
else |
|||
andusing=${using} |
|||
fi |
|||
|
|||
echo "Created \"Makefile\"" in `pwd`${andusing}. |
|||
|
|||
if [ "${host}" = "${target}" ] ; then |
|||
echo "Links are now set up for use with a ${target}." \ |
|||
> config.status |
|||
# | tee ${srcdir}/config.status |
|||
else |
|||
echo "Links are now set up for host ${host} and target ${target}." \ |
|||
> config.status |
|||
# | tee ${srcdir}/config.status |
|||
fi |
|||
|
|||
originaldir=`pwd` |
|||
cd ${srcdir} |
|||
fi |
|||
done # for each target |
|||
|
|||
# # Now build a Makefile for this host. |
|||
# if [ -n "${forcesubdirs}" ] ; then |
|||
# cd ${hostsubdir} |
|||
# cat > GNUmakefile << E!O!F |
|||
## Makefile generated by configure for host ${host}. |
|||
# |
|||
#%: |
|||
# for i in ${targets} ; do \ |
|||
# $(MAKE) -C Target-\$i \$@ |
|||
# |
|||
#all clean stage1 stage2 stage3 stage4etags tags TAGS |
|||
#E!O!F |
|||
# fi |
|||
done # for each host |
|||
|
|||
# If there are subdirectories, then recurse. |
|||
|
|||
if [ -n "${norecurse}" -o -z "${configdirs}" ] ; then exit 0 ; fi |
|||
|
|||
# configdirs is not null |
|||
for configdir in ${configdirs} ; do |
|||
echo Configuring ${configdir}... |
|||
specifics= |
|||
commons= |
|||
|
|||
if [ -n "${defaulttargets}" ] ; then |
|||
for host in ${hosts} ; do |
|||
if [ -d ${configdir}.${host} ] ; then |
|||
newspecifics="${specifics} ${host}" |
|||
specifics=${newspecifics} |
|||
else |
|||
newcommons="${commons} ${host}" |
|||
commons=${newcommons} |
|||
fi # if target specific |
|||
done # for each host |
|||
|
|||
if [ -n "${commons}" ] ; then |
|||
if [ -d ${configdir} ] ; then |
|||
(cd ${configdir} ; |
|||
./configure ${commons} ${verbose} ${forcesubdirs} ${removing} "+destdir=${destdir}") \ |
|||
| sed 's/^/ /' |
|||
else |
|||
echo Warning: directory \"${configdir}\" is missing. |
|||
fi |
|||
fi # if any common hosts |
|||
|
|||
if [ -n "${specifics}" ] ; then |
|||
for host in ${specifics} ; do |
|||
echo Configuring target specific directory ${configdir}.${host}... |
|||
(cd ${configdir}.${host} ; |
|||
./configure ${host} ${verbose} ${forcesubdirs} ${removing} "+destdir=${destdir}") \ |
|||
| sed 's/^/ /' |
|||
done # for host in specifics |
|||
fi # if there are any specifics |
|||
else |
|||
|
|||
for target in ${targets} ; do |
|||
if [ -d ${configdir}.${target} ] ; then |
|||
newspecifics="${specifics} ${target}" |
|||
specifics=${newspecifics} |
|||
else |
|||
newcommons="${commons} +target=${target}" |
|||
commons=${newcommons} |
|||
fi |
|||
|
|||
done # check for target specific dir override |
|||
|
|||
if [ -n "${verbose}" ] ; then |
|||
echo " "commons=\"${commons}\" |
|||
echo " "specifics=\"${specifics}\" |
|||
fi # if verbose |
|||
|
|||
if [ -n "${commons}" ] ; then |
|||
if [ -d ${configdir} ] ; then |
|||
(cd ${configdir} ; |
|||
./configure ${hosts} ${verbose} ${forcesubdirs} ${removing} ${commons} "+destdir=${destdir}") \ |
|||
| sed 's/^/ /' |
|||
else |
|||
echo Warning: directory \"${configdir}\" is missing. |
|||
fi |
|||
fi # if any commons |
|||
|
|||
if [ -n "${specifics}" ] ; then |
|||
for target in ${specifics} ; do |
|||
echo Configuring target specific directory ${configdir}.${target}... |
|||
(cd ${configdir}.${target} ; |
|||
./configure ${hosts} ${verbose} ${forcesubdirs} ${removing} "+target=${target}" "+destdir=${destdir}") \ |
|||
| sed 's/^/ /' |
|||
done |
|||
fi # if any specifics |
|||
fi # not default targets |
|||
done |
|||
|
|||
exit 0 |
|||
|
|||
# |
|||
# $Log$ |
|||
# Revision 1.1 1991/07/23 19:09:21 sef |
|||
# Initial revision |
|||
# |
|||
# Revision 1.20 1991/06/18 15:30:33 rich |
|||
# Added prms. |
|||
# |
|||
# Revision 1.19 1991/06/13 04:21:14 rich |
|||
# Re-arrange so that gcc, which creates directories, gets installed |
|||
# first. |
|||
# |
|||
# Revision 1.18 1991/06/12 21:23:05 rich |
|||
# correctly propogate destdir |
|||
# |
|||
# Revision 1.17 1991/06/09 20:39:58 rich |
|||
# Added +clib option. |
|||
# |
|||
# Revision 1.16 1991/05/27 21:04:21 rich |
|||
# Removed clib for now. |
|||
# |
|||
# Revision 1.15 1991/05/27 20:54:24 rich |
|||
# fixed a bug in multiple targets |
|||
# |
|||
# Revision 1.14 1991/05/22 01:44:04 rich |
|||
# remove gdb until config issues resolve. |
|||
# |
|||
# Revision 1.13 1991/05/19 08:00:09 rich |
|||
# Added gdb. |
|||
# |
|||
# Revision 1.12 1991/05/19 00:32:13 rich |
|||
# Changes to deal with missing subdirs gracefully, and changes dictated |
|||
# from dropping configure over gdb. |
|||
# |
|||
# Revision 1.4 1991/05/19 00:16:45 rich |
|||
# Configure for gdb. |
|||
# |
|||
# Revision 1.10 1991/05/04 00:58:38 rich |
|||
# Fix program name bug. |
|||
# |
|||
# Revision 1.9 1991/05/03 19:14:18 rich |
|||
# Changed getopt to libiberty, commented out an aborted attempt at host |
|||
# level Makefiles because it caused errors on +rm, add a warning for |
|||
# directories expected to be removed on +rm but that don't exist. |
|||
# |
|||
# Revision 1.8 1991/04/24 16:50:59 rich |
|||
# Three staging checkpoint. |
|||
# |
|||
# Revision 1.7 1991/04/17 01:34:47 rich |
|||
# Added getopt for binutils, fixed problem with host dependancies in |
|||
# configure.template. |
|||
# |
|||
# Revision 1.6 1991/04/16 00:18:44 rich |
|||
# Now handles multiple hosts and targets. |
|||
# |
|||
# Revision 1.5 1991/04/15 23:43:44 rich |
|||
# Now handles multiple hosts and targets. |
|||
# |
|||
# Revision 1.4 1991/04/13 02:11:03 rich |
|||
# Config cut 3. We now almost install a29k. |
|||
# |
|||
# Revision 1.3 1991/04/11 02:41:54 rich |
|||
# Cut 2 config. Subdirs. |
|||
# |
|||
# |
|||
# |
|||
|
|||
# |
|||
# Local Variables: |
|||
# fill-column: 131 |
|||
# End: |
|||
# |
|||
|
|||
# end of configure.template |
|||
@ -1,108 +0,0 @@ |
|||
|
|||
|
|||
|
|||
call graph profile: |
|||
The sum of self and descendents is the major sort |
|||
for this listing. |
|||
|
|||
function entries: |
|||
|
|||
index the index of the function in the call graph |
|||
listing, as an aid to locating it (see below). |
|||
|
|||
%time the percentage of the total time of the program |
|||
accounted for by this function and its |
|||
descendents. |
|||
|
|||
self the number of seconds spent in this function |
|||
itself. |
|||
|
|||
descendents |
|||
the number of seconds spent in the descendents of |
|||
this function on behalf of this function. |
|||
|
|||
called the number of times this function is called (other |
|||
than recursive calls). |
|||
|
|||
self the number of times this function calls itself |
|||
recursively. |
|||
|
|||
name the name of the function, with an indication of |
|||
its membership in a cycle, if any. |
|||
|
|||
index the index of the function in the call graph |
|||
listing, as an aid to locating it. |
|||
|
|||
|
|||
|
|||
parent listings: |
|||
|
|||
self* the number of seconds of this function's self time |
|||
which is due to calls from this parent. |
|||
|
|||
descendents* |
|||
the number of seconds of this function's |
|||
descendent time which is due to calls from this |
|||
parent. |
|||
|
|||
called** the number of times this function is called by |
|||
this parent. This is the numerator of the |
|||
fraction which divides up the function's time to |
|||
its parents. |
|||
|
|||
total* the number of times this function was called by |
|||
all of its parents. This is the denominator of |
|||
the propagation fraction. |
|||
|
|||
parents the name of this parent, with an indication of the |
|||
parent's membership in a cycle, if any. |
|||
|
|||
index the index of this parent in the call graph |
|||
listing, as an aid in locating it. |
|||
|
|||
|
|||
|
|||
children listings: |
|||
|
|||
self* the number of seconds of this child's self time |
|||
which is due to being called by this function. |
|||
|
|||
descendent* |
|||
the number of seconds of this child's descendent's |
|||
time which is due to being called by this |
|||
function. |
|||
|
|||
called** the number of times this child is called by this |
|||
function. This is the numerator of the |
|||
propagation fraction for this child. |
|||
|
|||
total* the number of times this child is called by all |
|||
functions. This is the denominator of the |
|||
propagation fraction. |
|||
|
|||
children the name of this child, and an indication of its |
|||
membership in a cycle, if any. |
|||
|
|||
index the index of this child in the call graph listing, |
|||
as an aid to locating it. |
|||
|
|||
|
|||
|
|||
* these fields are omitted for parents (or |
|||
children) in the same cycle as the function. If |
|||
the function (or child) is a member of a cycle, |
|||
the propagated times and propagation denominator |
|||
represent the self time and descendent time of the |
|||
cycle as a whole. |
|||
|
|||
** static-only parents and children are indicated |
|||
by a call count of 0. |
|||
|
|||
|
|||
|
|||
cycle listings: |
|||
the cycle as a whole is listed with the same |
|||
fields as a function entry. Below it are listed |
|||
the members of the cycle, and their contributions |
|||
to the time and call counts of the cycle. |
|||
|
|||
@ -1,32 +0,0 @@ |
|||
|
|||
|
|||
|
|||
flat profile: |
|||
|
|||
% the percentage of the total running time of the |
|||
time program used by this function. |
|||
|
|||
cumulative a running sum of the number of seconds accounted |
|||
seconds for by this function and those listed above it. |
|||
|
|||
self the number of seconds accounted for by this |
|||
seconds function alone. This is the major sort for this |
|||
listing. |
|||
|
|||
calls the number of times this function was invoked, if |
|||
this function is profiled, else blank. |
|||
|
|||
self the average number of milliseconds spent in this |
|||
ms/call function per call, if this function is profiled, |
|||
else blank. |
|||
|
|||
total the average number of milliseconds spent in this |
|||
ms/call function and its descendents per call, if this |
|||
function is profiled, else blank. |
|||
|
|||
name the name of the function. This is the minor sort |
|||
for this listing. The index shows the location of |
|||
the function in the gprof listing. If the index is |
|||
in parenthesis it shows where it would appear in |
|||
the gprof listing if it were to be printed. |
|||
|
|||
@ -1,29 +0,0 @@ |
|||
BEGIN { |
|||
FS="\""; |
|||
print "/* ==> Do not modify this file!! It is created automatically" |
|||
print " by make-c-prog.awk; modify make-c-prog.awk instead. <== */" |
|||
print "" |
|||
print "#include <stdio.h>" |
|||
} |
|||
|
|||
{ |
|||
if (curfun != FUNCTION) |
|||
{ |
|||
if (curfun) |
|||
print "}" |
|||
curfun = FUNCTION |
|||
print "" |
|||
print "void"; |
|||
printf "%s (file)\n", FUNCTION |
|||
print " FILE *file;"; |
|||
print "{"; |
|||
} |
|||
printf " fputs (\""; |
|||
for (i = 1; i < NF; i++) |
|||
printf "%s\\\"", $i; |
|||
printf "%s\\n\", file);\n", $NF; |
|||
} |
|||
|
|||
END { |
|||
print "}" |
|||
} |
|||
@ -1,24 +0,0 @@ |
|||
/*
|
|||
* Copyright (c) 1989 The Regents of the University of California. |
|||
* All rights reserved. |
|||
* |
|||
* Redistribution and use in source and binary forms are permitted |
|||
* provided that: (1) source distributions retain this entire copyright |
|||
* notice and comment, and (2) distributions including binaries display |
|||
* the following acknowledgement: ``This product includes software |
|||
* developed by the University of California, Berkeley and its contributors'' |
|||
* in the documentation or other materials provided with the distribution |
|||
* and in all advertising materials mentioning features or use of this |
|||
* software. Neither the name of the University nor the names of its |
|||
* contributors may be used to endorse or promote products derived |
|||
* from this software without specific prior written permission. |
|||
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR |
|||
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED |
|||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
|||
* |
|||
* @(#)pathnames.h 5.2 (Berkeley) 6/1/90 |
|||
*/ |
|||
|
|||
#define _PATH_FLAT_BLURB "/usr/local/lib/gprof.flat" |
|||
#define _PATH_CALLG_BLURB "/usr/local/lib/gprof.callg" |
|||
|
|||
@ -1,12 +0,0 @@ |
|||
void |
|||
foo(int x) { |
|||
if (x&3) |
|||
foo (x-1); |
|||
} |
|||
|
|||
main() { |
|||
int i; |
|||
|
|||
for (i=0; i< 1024; i++) |
|||
foo(i); |
|||
} |
|||
@ -1,160 +0,0 @@ |
|||
The GNU mmalloc (mapped-malloc) package. fnf@cygnus.com |
|||
|
|||
|
|||
Description |
|||
----------- |
|||
|
|||
This is a heavily modified version of GNU malloc which has been extended to |
|||
use mmap() as the basic mechanism for for obtaining memory from the system, |
|||
rather than sbrk(). This gives it several advantages over the |
|||
more traditional malloc: |
|||
|
|||
* Providing suitable precautions are taken to avoid memory region |
|||
collisions, sbrk() is now available for use by applications that |
|||
use this package and still need to use some memory management |
|||
package that includes functions like malloc/realloc/free. |
|||
|
|||
* Several different memory pools can be used, each of them growing |
|||
or shinking under control of mmap(), with the mmalloc functions |
|||
using a specific pool on a call by call basis. |
|||
|
|||
* By using mmap, it is easy to create data pools which are intended to |
|||
be persistent and exist as a filesystem object after the creating |
|||
process has gone away. |
|||
|
|||
* Because multiple memory pools can be managed, data used for a |
|||
specific purpose can be allocated into it's own memory pool, making |
|||
it easier to allow applications to "dump" and "restore" initialized |
|||
malloc-managed memory regions. I.E., the "unexec" hack popularized |
|||
by GNU emacs could potentially go away. |
|||
|
|||
|
|||
Implementation |
|||
-------------- |
|||
|
|||
The mmalloc functions contain no internal static state. All of mmalloc |
|||
internal data is allocated in the mapped in region, along with the user |
|||
data that it manages. This allows it to manage multiple such regions |
|||
and to "pick up where it left off" when such regions are later dynamically |
|||
mapped back in. |
|||
|
|||
In some sense, malloc has been "purified" to contain no internal state |
|||
information and generalized to use multiple memory regions rather than a |
|||
single region managed by sbrk(). However the new routines now need an |
|||
extra parameter which informs malloc which memory region it is dealing |
|||
with (along with other information). |
|||
|
|||
For ease of initial implementation, and to avoid exporting or importing |
|||
any more global variables or routines than necessary, this package is |
|||
implemented with all functions contained within a single source file. |
|||
At some future point, once everything has stabilized, it may be desirable |
|||
split it up into separate files. |
|||
|
|||
The functions initially provided by mmalloc are: |
|||
|
|||
void *mmalloc_attach (int fd, void *baseaddr); |
|||
void *mmalloc_detach (void *md); |
|||
int mmalloc_errno (void *md); |
|||
int mmalloc_setkey (void *md, int keynum, void *key); |
|||
void *mmalloc_getkey (void *md, int keynum); |
|||
|
|||
void *mmalloc (void *md, size_t size); |
|||
void *mrealloc (void *md, void *ptr, size_t size); |
|||
void *mvalloc (void *md, size_t size); |
|||
void mfree (void *md, void *ptr); |
|||
|
|||
Backwards Compatibility |
|||
----------------------- |
|||
|
|||
To allow a single malloc package to be used in a given application, provision |
|||
is made for the traditional malloc/realloc/free functions to be implemented |
|||
as special cases of the mmalloc functions. In particular, if any of the |
|||
functions that expect malloc descriptors are called with a NULL pointer rather |
|||
than a valid malloc descriptor, then they default to using an mmap'd region |
|||
starting at the current sbrk() value and mapped to /dev/zero. Applications |
|||
can simply include the following defines to use the mmalloc versions: |
|||
|
|||
#define malloc(size) mmalloc ((void *)0, (size)) |
|||
#define realloc(ptr,size) mrealloc ((void *)0, (ptr), (size)); |
|||
#define free(ptr) mfree ((void *)0, (ptr)) |
|||
|
|||
or replace the existing malloc/realloc/free calls with the above patterns |
|||
if the #define's cause problems. |
|||
|
|||
Note that this does not prevent calls to malloc/realloc/free within |
|||
libraries from continuing to use the library version of malloc, so if this |
|||
is a problem, the compatibility issue needs to be dealt with in another way. |
|||
|
|||
|
|||
Function Descriptions |
|||
--------------------- |
|||
|
|||
void *mmalloc_attach (int fd, void *baseaddr); |
|||
|
|||
Initialize access to a mmalloc managed region. |
|||
|
|||
If FD is a valid file descriptor for an open file then data for the |
|||
mmalloc managed region is mapped to that file, otherwise "/dev/zero" |
|||
is used and the data will not exist in any filesystem object. |
|||
|
|||
If the open file corresponding to FD is from a previous use of |
|||
mmalloc and passes some basic sanity checks to ensure that it is |
|||
compatible with the current mmalloc package, then it's data is |
|||
mapped in and is immediately accessible at the same addresses in |
|||
the current process as the process that created the file. |
|||
|
|||
If BASEADDR is not NULL, the mapping is established starting at the |
|||
specified address in the process address space. If BASEADDR is NULL, |
|||
the mmalloc package chooses a suitable address at which to start the |
|||
mapped region, which will be the value of the previous mapping if |
|||
opening an existing file which was previously built by mmalloc, or |
|||
for new files will be a value chosen by mmap. |
|||
|
|||
Specifying BASEADDR provides more control over where the regions |
|||
start and how big they can be before bumping into existing mapped |
|||
regions or future mapped regions. |
|||
|
|||
On success, returns a "malloc descriptor" which is used in subsequent |
|||
calls to other mmalloc package functions. It is explicitly "void *" |
|||
("char *" for systems that don't fully support void) so that users |
|||
of the package don't have to worry about the actual implementation |
|||
details. |
|||
|
|||
On failure returns NULL. |
|||
|
|||
void *mmalloc_detach (void *md); |
|||
|
|||
Terminate access to a mmalloc managed region by closing the base |
|||
file and unmapping all memory pages associated with the region. |
|||
|
|||
Returns NULL on success. |
|||
|
|||
Returns the malloc descriptor on failure, which can subsequently |
|||
be used for further action (such as obtaining more information about |
|||
the nature of the failure). |
|||
|
|||
void *mmalloc (void *md, size_t size); |
|||
|
|||
Given an mmalloc descriptor MD, allocate additional memory of |
|||
SIZE bytes in the associated mapped region. |
|||
|
|||
void *mrealloc (void *md, void *ptr, size_t size); |
|||
|
|||
Given an mmalloc descriptor MD and a pointer to memory previously |
|||
allocated by mmalloc in PTR, reallocate the memory to be SIZE bytes |
|||
long, possibly moving the existing contents of memory if necessary. |
|||
|
|||
void *mvalloc (void *md, size_t size); |
|||
|
|||
Like mmalloc but the resulting memory is aligned on a page boundary. |
|||
|
|||
void mfree (void *md, void *ptr); |
|||
|
|||
Given an mmalloc descriptor MD and a pointer to memory previously |
|||
allocated by mmalloc in PTR, free the previously allocated memory. |
|||
|
|||
int mmalloc_errno (void *md); |
|||
|
|||
Given a mmalloc descriptor, if the last mmalloc operation |
|||
failed for some reason due to a system call failure, then |
|||
returns the associated errno. Returns 0 otherwise. |
|||
File diff suppressed because it is too large
Loading…
Reference in new issue