aboutsummaryrefslogtreecommitdiff
path: root/man/man3/bin.html
blob: f016622fa14058437e9a5ce446559e20fa3d132c (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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<head>
<title>bin(3) - Plan 9 from User Space</title>
<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
</head>
<body bgcolor=#ffffff>
<table border=0 cellpadding=0 cellspacing=0 width=100%>
<tr height=10><td>
<tr><td width=20><td>
<tr><td width=20><td><b>BIN(3)</b><td align=right><b>BIN(3)</b>
<tr><td width=20><td colspan=2>
    <br>
<p><font size=+1><b>NAME     </b></font><br>

<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>

    binalloc, bingrow, binfree &ndash; grouped memory allocation<br>
    
</table>
<p><font size=+1><b>SYNOPSIS     </b></font><br>

<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>

    <tt><font size=+1>#include &lt;u.h&gt;<br>
    #include &lt;libc.h&gt;<br>
    #include &lt;bin.h&gt; 
    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
    </font></tt>
    
    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
    
    <tt><font size=+1>typedef struct BinBin; 
    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
    </font></tt>
    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;*binalloc(Bin **bp, ulong size, int clr); 
    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
    </font></tt>
    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;*bingrow(Bin **bp, void *op, ulong osize,<br>
     
    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>

        
        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>

            ulong size, int clr); 
            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
            
        </table>
        
    </table>
    </font></tt>
    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>

        
        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>

            
            
        </table>
        
    </table>
    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;binfree(Bin **bp);<br>
    </font></tt>
</table>
<p><font size=+1><b>DESCRIPTION     </b></font><br>

<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>

    These routines provide simple grouped memory allocation and deallocation.
    Items allocated with <i>binalloc</i> are added to the <i>Bin</i> pointed to
    by <i>bp</i>. All items in a bin may be freed with one call to <i>binfree</i>;
    there is no way to free a single item. 
    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
    
    <i>Binalloc</i> returns a pointer to a new block of at least <i>size</i> bytes.
    The block is suitably aligned for storage of any type of object.
    No two active pointers from <i>binalloc</i> will have the same value.
    The call <tt><font size=+1>binalloc(0)</font></tt> returns a valid pointer rather than null.
    If <i>clr</i> is non-zero, the allocated memory is set to 0; otherwise,
    the contents are undefined. 
    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
    
    <i>Bingrow</i> is used to extend the size of a block of memory returned
    by <i>binalloc</i>. <i>Bp</i> must point to the same bin group used to allocate
    the original block, and <i>osize</i> must be the last size used to allocate
    or grow the block. A pointer to a block of at least <i>size</i> bytes
    is returned, with the same contents in the first <i>osize
    </i>locations. If <i>clr</i> is non-zero, the remaining bytes are set to
    0, and are undefined otherwise. If <i>op</i> is <tt><font size=+1>nil</font></tt>, it and <i>osize</i> are
    ignored, and the result is the same as calling <i>binalloc</i>. 
    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
    
    <i>Binalloc</i> and <i>bingrow</i> allocate large chunks of memory using <a href="../man3/malloc.html"><i>malloc</i>(3)</a>
    and return pieces of these chunks. The chunks are <i>free</i>&#8217;d upon
    a call to <i>binfree</i>.<br>
    
</table>
<p><font size=+1><b>SOURCE     </b></font><br>

<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>

    <tt><font size=+1>/usr/local/plan9/src/libbin<br>
    </font></tt>
</table>
<p><font size=+1><b>SEE ALSO    </b></font><br>

<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>

    <a href="../man3/malloc.html"><i>malloc</i>(3)</a><br>
    
</table>
<p><font size=+1><b>DIAGNOSTICS     </b></font><br>

<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>

    <i>binalloc</i> and <i>bingrow</i> return 0 if there is no available memory.<br>
    
</table>

<td width=20>
<tr height=20><td>
</table>
<!-- TRAILER -->
<table border=0 cellpadding=0 cellspacing=0 width=100%>
<tr height=15><td width=10><td><td width=10>
<tr><td><td>
<center>
<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
</center>
</table>
<!-- TRAILER -->
</body></html>