aboutsummaryrefslogtreecommitdiffstats
path: root/README
blob: 008b208548f59926dbd00eb0731dbc44ceb1bd2d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
This is a test release of the Linux Persistent Memory system.
The LPSM is a C library with a simple interface that manages a segment
of memory backed by a persistent file. LPSM differs from ordinary
mmap() in two ways: it can optionally offer heap management
(malloc()/free()/realloc()) within the arena; more importantly, a
transaction log is used to ensure the consistency of the persistent
representation. The application notifies LPSM whenever the arena is in
a consistent state, suitable for "checkpointing". If the application
or system crashes, the arena will always be recovered to a consistent
checkpoint.



Unless otherwise noted, all files in this distributions are:

  Copyright 2001 H. Peter Anvin - All Rights Reserved

This package is licensed under the GNU LGPL version 2.1.
See the included file COPYING.LIB for licensing conditions.

---------------------------------------------------------------------

There is now a mailing list if you want to follow the development of
LPSM or give feedback.  To join, please use the Mailman interface at:

	     http://www.zytor.com/mailman/listinfo/lpsm/

---------------------------------------------------------------------

THIS IS A DEVELOPMENT SNAPSHOT.  If this was a real release there
would be some documentation and a much better information in this
file.

IMPORTANT: I cannot at this stage guarantee that future versions of
the LPSM will be binary compatible.  These are test releases.  Use at
your own risk.

LPSM DATABASES ARE NOT PORTABLE.  This is pretty much inherent in the
fact that the LPSM library does not attach any meaning to the data it
stores.  Therefore it is imperative that your application allows a way
to dump its database contents in a portable form.

Currently the persistent memory database is not sharable nor
thread-safe.  I'm hoping to resolve at least the latter condition in
due time.

Because the persistent memory is mapped into memory at a fixed address
(which varies with architecture) it is not possible to have more than
one LPSM database mapped at any one time.


** Functionality description:

The persistent memory store can be used in two modes: managed and
unmanaged.  Unmanaged provides a flat chunk (arena) of memory without
any further management support; managed provides management via
malloc/free/realloc.

All of these use a pair of files as backing store: a datafile, which
is equivalent in size to the managed memory, and a logfile, which is
used for the commit log.

The LPSM library installs a signal handler for SIGSEGV.

Please see the following man pages included with this distribution:

Unmanaged mode:

	lpsm_arena_init(3)
	lpsm_checkpoint(3)
	lpsm_extend(3)
	lpsm_shutdown(3)
	lpsm_recover(3)

Managed mode:

	lpsm_init(3)
	lpsm_recover(3)
	lpsm_checkpoint(3)
	lpsm_shutdown(3)
	lpsm_malloc(3)
	lpsm_arena_stats(3)
	lpsm_recover(3)