Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 15 Jan 1998 23:12:12 -0200 (EDT)
From:      Joao Carlos Mendes Luis <jonny@coppe.ufrj.br>
To:        joelh@gnu.org
Cc:        atrens@nortel.ca, freebsd-hackers@FreeBSD.ORG
Subject:   Re: sharable static arrays?
Message-ID:  <199801160112.XAA01058@gaia.coppe.ufrj.br>
In-Reply-To: <199801151908.NAA01914@detlev.UUCP> from Joel Ray Holveck at "Jan 15, 98 01:08:20 pm"

next in thread | previous in thread | raw e-mail | index | archive | help
#define quoting(Joel Ray Holveck)
// > Copy-on-write aka `lazy copy' is a detail of the implementation
// > *not* the interface. You must assume that each process gets its own
// > data segment, period.  Otherwise you couple your code to the OS
// > implementation. There are a number of reasons why this a bad idea.
// 
// I realize that I can't depend on details of the OS implementation,
// particularly since copy-on-write is transparent to the user.  However,
// when I'm writing a program and trying to decide whether a large lookup
// table should be built statically into the compiled code, generated at
// runtime, or whatever, it is helpful to know how the memory usage will
// be affected.  That's what I'm trying to accomplish with this whole
// issue.

Why don't you simply save all your huge const data array in a separate
file, and mmap() it in ?

The compiler will also be happy with this approach, not having to compile
this huge array all time.

const bigtype *bigarray;
int fd;
struct stat si;

...

  if ( ( fd = open( BIGFILE, O_RDONLY ) ) < 0 ) {
    printf( "Error opening data file !!!" );
    return;
  }
  fstat( fd, &si );
  if ( ( bigarray = mmap( NULL, si.st_size, PROT_READ, MAP_INHERIT, fd, 0 ) ) < 0 ) {
    printf( "Error mmaping file" );
    return;
  }

...

					Jonny

--
Joao Carlos Mendes Luis			jonny@gta.ufrj.br
+55 21 290-4698				jonny@coppe.ufrj.br
Universidade Federal do Rio de Janeiro	UFRJ/COPPE/CISI
PGP fingerprint: 29 C0 50 B9 B6 3E 58 F2  83 5F E3 26 BF 0F EA 67



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199801160112.XAA01058>