authorgravatar for quae@daurnimator.comdaurnimator <quae@daurnimator.com> 2019-11-17 14:03:52+11:00
committergravatar for quae@daurnimator.comdaurnimator <quae@daurnimator.com> 2019-11-17 14:14:57+11:00
logcc76494c428599b769049eeb66fd7c877039068b
treef1faa95d8fd22d56553021ce4a2a1411e5083a15
parent4a3bb557f1612bc9955b1bf97519afd027acff03
signaturelock-open Commit is signed but in an unrecognized format.

std: use enum literals in valgrind module


3 files changed, 53 insertions(+), 53 deletions(-)

lib/std/valgrind.zig+29-29
...@@ -96,48 +96,48 @@ fn doClientRequestStmt(request: ClientRequest, a1: usize, a2: usize, a3: usize,...@@ -96,48 +96,48 @@ fn doClientRequestStmt(request: ClientRequest, a1: usize, a2: usize, a3: usize,
96/// running under Valgrind which is running under another Valgrind,96/// running under Valgrind which is running under another Valgrind,
97/// etc.97/// etc.
98pub fn runningOnValgrind() usize {98pub fn runningOnValgrind() usize {
99 return doClientRequestExpr(0, ClientRequest.RunningOnValgrind, 0, 0, 0, 0, 0);99 return doClientRequestExpr(0, .RunningOnValgrind, 0, 0, 0, 0, 0);
100}100}
101101
102/// Discard translation of code in the slice qzz. Useful if you are debugging102/// Discard translation of code in the slice qzz. Useful if you are debugging
103/// a JITter or some such, since it provides a way to make sure valgrind will103/// a JITter or some such, since it provides a way to make sure valgrind will
104/// retranslate the invalidated area. Returns no value.104/// retranslate the invalidated area. Returns no value.
105pub fn discardTranslations(qzz: []const u8) void {105pub fn discardTranslations(qzz: []const u8) void {
106 doClientRequestStmt(ClientRequest.DiscardTranslations, @ptrToInt(qzz.ptr), qzz.len, 0, 0, 0);106 doClientRequestStmt(.DiscardTranslations, @ptrToInt(qzz.ptr), qzz.len, 0, 0, 0);
107}107}
108108
109pub fn innerThreads(qzz: [*]u8) void {109pub fn innerThreads(qzz: [*]u8) void {
110 doClientRequestStmt(ClientRequest.InnerThreads, qzz, 0, 0, 0, 0);110 doClientRequestStmt(.InnerThreads, qzz, 0, 0, 0, 0);
111}111}
112112
113//pub fn printf(format: [*]const u8, args: ...) usize {113//pub fn printf(format: [*]const u8, args: ...) usize {
114// return doClientRequestExpr(0,114// return doClientRequestExpr(0,
115// ClientRequest.PrintfValistByRef,115// .PrintfValistByRef,
116// @ptrToInt(format), @ptrToInt(args),116// @ptrToInt(format), @ptrToInt(args),
117// 0, 0, 0);117// 0, 0, 0);
118//}118//}
119119
120//pub fn printfBacktrace(format: [*]const u8, args: ...) usize {120//pub fn printfBacktrace(format: [*]const u8, args: ...) usize {
121// return doClientRequestExpr(0,121// return doClientRequestExpr(0,
122// ClientRequest.PrintfBacktraceValistByRef,122// .PrintfBacktraceValistByRef,
123// @ptrToInt(format), @ptrToInt(args),123// @ptrToInt(format), @ptrToInt(args),
124// 0, 0, 0);124// 0, 0, 0);
125//}125//}
126126
127pub fn nonSIMDCall0(func: fn (usize) usize) usize {127pub fn nonSIMDCall0(func: fn (usize) usize) usize {
128 return doClientRequestExpr(0, ClientRequest.ClientCall0, @ptrToInt(func), 0, 0, 0, 0);128 return doClientRequestExpr(0, .ClientCall0, @ptrToInt(func), 0, 0, 0, 0);
129}129}
130130
131pub fn nonSIMDCall1(func: fn (usize, usize) usize, a1: usize) usize {131pub fn nonSIMDCall1(func: fn (usize, usize) usize, a1: usize) usize {
132 return doClientRequestExpr(0, ClientRequest.ClientCall1, @ptrToInt(func), a1, 0, 0, 0);132 return doClientRequestExpr(0, .ClientCall1, @ptrToInt(func), a1, 0, 0, 0);
133}133}
134134
135pub fn nonSIMDCall2(func: fn (usize, usize, usize) usize, a1: usize, a2: usize) usize {135pub fn nonSIMDCall2(func: fn (usize, usize, usize) usize, a1: usize, a2: usize) usize {
136 return doClientRequestExpr(0, ClientRequest.ClientCall2, @ptrToInt(func), a1, a2, 0, 0);136 return doClientRequestExpr(0, .ClientCall2, @ptrToInt(func), a1, a2, 0, 0);
137}137}
138138
139pub fn nonSIMDCall3(func: fn (usize, usize, usize, usize) usize, a1: usize, a2: usize, a3: usize) usize {139pub fn nonSIMDCall3(func: fn (usize, usize, usize, usize) usize, a1: usize, a2: usize, a3: usize) usize {
140 return doClientRequestExpr(0, ClientRequest.ClientCall3, @ptrToInt(func), a1, a2, a3, 0);140 return doClientRequestExpr(0, .ClientCall3, @ptrToInt(func), a1, a2, a3, 0);
141}141}
142142
143/// Counts the number of errors that have been recorded by a tool. Nb:143/// Counts the number of errors that have been recorded by a tool. Nb:
...@@ -145,19 +145,19 @@ pub fn nonSIMDCall3(func: fn (usize, usize, usize, usize) usize, a1: usize, a2:...@@ -145,19 +145,19 @@ pub fn nonSIMDCall3(func: fn (usize, usize, usize, usize) usize, a1: usize, a2:
145/// VG_(unique_error)() for them to be counted.145/// VG_(unique_error)() for them to be counted.
146pub fn countErrors() usize {146pub fn countErrors() usize {
147 return doClientRequestExpr(0, // default return147 return doClientRequestExpr(0, // default return
148 ClientRequest.CountErrors, 0, 0, 0, 0, 0);148 .CountErrors, 0, 0, 0, 0, 0);
149}149}
150150
151pub fn mallocLikeBlock(mem: []u8, rzB: usize, is_zeroed: bool) void {151pub fn mallocLikeBlock(mem: []u8, rzB: usize, is_zeroed: bool) void {
152 doClientRequestStmt(ClientRequest.MalloclikeBlock, @ptrToInt(mem.ptr), mem.len, rzB, @boolToInt(is_zeroed), 0);152 doClientRequestStmt(.MalloclikeBlock, @ptrToInt(mem.ptr), mem.len, rzB, @boolToInt(is_zeroed), 0);
153}153}
154154
155pub fn resizeInPlaceBlock(oldmem: []u8, newsize: usize, rzB: usize) void {155pub fn resizeInPlaceBlock(oldmem: []u8, newsize: usize, rzB: usize) void {
156 doClientRequestStmt(ClientRequest.ResizeinplaceBlock, @ptrToInt(oldmem.ptr), oldmem.len, newsize, rzB, 0);156 doClientRequestStmt(.ResizeinplaceBlock, @ptrToInt(oldmem.ptr), oldmem.len, newsize, rzB, 0);
157}157}
158158
159pub fn freeLikeBlock(addr: [*]u8, rzB: usize) void {159pub fn freeLikeBlock(addr: [*]u8, rzB: usize) void {
160 doClientRequestStmt(ClientRequest.FreelikeBlock, @ptrToInt(addr), rzB, 0, 0, 0);160 doClientRequestStmt(.FreelikeBlock, @ptrToInt(addr), rzB, 0, 0, 0);
161}161}
162162
163/// Create a memory pool.163/// Create a memory pool.
...@@ -166,66 +166,66 @@ pub const MempoolFlags = extern enum {...@@ -166,66 +166,66 @@ pub const MempoolFlags = extern enum {
166 MetaPool = 2,166 MetaPool = 2,
167};167};
168pub fn createMempool(pool: [*]u8, rzB: usize, is_zeroed: bool, flags: usize) void {168pub fn createMempool(pool: [*]u8, rzB: usize, is_zeroed: bool, flags: usize) void {
169 doClientRequestStmt(ClientRequest.CreateMempool, @ptrToInt(pool), rzB, @boolToInt(is_zeroed), flags, 0);169 doClientRequestStmt(.CreateMempool, @ptrToInt(pool), rzB, @boolToInt(is_zeroed), flags, 0);
170}170}
171171
172/// Destroy a memory pool.172/// Destroy a memory pool.
173pub fn destroyMempool(pool: [*]u8) void {173pub fn destroyMempool(pool: [*]u8) void {
174 doClientRequestStmt(ClientRequest.DestroyMempool, pool, 0, 0, 0, 0);174 doClientRequestStmt(.DestroyMempool, pool, 0, 0, 0, 0);
175}175}
176176
177/// Associate a piece of memory with a memory pool.177/// Associate a piece of memory with a memory pool.
178pub fn mempoolAlloc(pool: [*]u8, mem: []u8) void {178pub fn mempoolAlloc(pool: [*]u8, mem: []u8) void {
179 doClientRequestStmt(ClientRequest.MempoolAlloc, @ptrToInt(pool), @ptrToInt(mem.ptr), mem.len, 0, 0);179 doClientRequestStmt(.MempoolAlloc, @ptrToInt(pool), @ptrToInt(mem.ptr), mem.len, 0, 0);
180}180}
181181
182/// Disassociate a piece of memory from a memory pool.182/// Disassociate a piece of memory from a memory pool.
183pub fn mempoolFree(pool: [*]u8, addr: [*]u8) void {183pub fn mempoolFree(pool: [*]u8, addr: [*]u8) void {
184 doClientRequestStmt(ClientRequest.MempoolFree, @ptrToInt(pool), @ptrToInt(addr), 0, 0, 0);184 doClientRequestStmt(.MempoolFree, @ptrToInt(pool), @ptrToInt(addr), 0, 0, 0);
185}185}
186186
187/// Disassociate any pieces outside a particular range.187/// Disassociate any pieces outside a particular range.
188pub fn mempoolTrim(pool: [*]u8, mem: []u8) void {188pub fn mempoolTrim(pool: [*]u8, mem: []u8) void {
189 doClientRequestStmt(ClientRequest.MempoolTrim, @ptrToInt(pool), @ptrToInt(mem.ptr), mem.len, 0, 0);189 doClientRequestStmt(.MempoolTrim, @ptrToInt(pool), @ptrToInt(mem.ptr), mem.len, 0, 0);
190}190}
191191
192/// Resize and/or move a piece associated with a memory pool.192/// Resize and/or move a piece associated with a memory pool.
193pub fn moveMempool(poolA: [*]u8, poolB: [*]u8) void {193pub fn moveMempool(poolA: [*]u8, poolB: [*]u8) void {
194 doClientRequestStmt(ClientRequest.MoveMempool, @ptrToInt(poolA), @ptrToInt(poolB), 0, 0, 0);194 doClientRequestStmt(.MoveMempool, @ptrToInt(poolA), @ptrToInt(poolB), 0, 0, 0);
195}195}
196196
197/// Resize and/or move a piece associated with a memory pool.197/// Resize and/or move a piece associated with a memory pool.
198pub fn mempoolChange(pool: [*]u8, addrA: [*]u8, mem: []u8) void {198pub fn mempoolChange(pool: [*]u8, addrA: [*]u8, mem: []u8) void {
199 doClientRequestStmt(ClientRequest.MempoolChange, @ptrToInt(pool), @ptrToInt(addrA), @ptrToInt(mem.ptr), mem.len, 0);199 doClientRequestStmt(.MempoolChange, @ptrToInt(pool), @ptrToInt(addrA), @ptrToInt(mem.ptr), mem.len, 0);
200}200}
201201
202/// Return if a mempool exists.202/// Return if a mempool exists.
203pub fn mempoolExists(pool: [*]u8) bool {203pub fn mempoolExists(pool: [*]u8) bool {
204 return doClientRequestExpr(0, ClientRequest.MempoolExists, @ptrToInt(pool), 0, 0, 0, 0) != 0;204 return doClientRequestExpr(0, .MempoolExists, @ptrToInt(pool), 0, 0, 0, 0) != 0;
205}205}
206206
207/// Mark a piece of memory as being a stack. Returns a stack id.207/// Mark a piece of memory as being a stack. Returns a stack id.
208/// start is the lowest addressable stack byte, end is the highest208/// start is the lowest addressable stack byte, end is the highest
209/// addressable stack byte.209/// addressable stack byte.
210pub fn stackRegister(stack: []u8) usize {210pub fn stackRegister(stack: []u8) usize {
211 return doClientRequestExpr(0, ClientRequest.StackRegister, @ptrToInt(stack.ptr), @ptrToInt(stack.ptr) + stack.len, 0, 0, 0);211 return doClientRequestExpr(0, .StackRegister, @ptrToInt(stack.ptr), @ptrToInt(stack.ptr) + stack.len, 0, 0, 0);
212}212}
213213
214/// Unmark the piece of memory associated with a stack id as being a stack.214/// Unmark the piece of memory associated with a stack id as being a stack.
215pub fn stackDeregister(id: usize) void {215pub fn stackDeregister(id: usize) void {
216 doClientRequestStmt(ClientRequest.StackDeregister, id, 0, 0, 0, 0);216 doClientRequestStmt(.StackDeregister, id, 0, 0, 0, 0);
217}217}
218218
219/// Change the start and end address of the stack id.219/// Change the start and end address of the stack id.
220/// start is the new lowest addressable stack byte, end is the new highest220/// start is the new lowest addressable stack byte, end is the new highest
221/// addressable stack byte.221/// addressable stack byte.
222pub fn stackChange(id: usize, newstack: []u8) void {222pub fn stackChange(id: usize, newstack: []u8) void {
223 doClientRequestStmt(ClientRequest.StackChange, id, @ptrToInt(newstack.ptr), @ptrToInt(newstack.ptr) + newstack.len, 0, 0);223 doClientRequestStmt(.StackChange, id, @ptrToInt(newstack.ptr), @ptrToInt(newstack.ptr) + newstack.len, 0, 0);
224}224}
225225
226// Load PDB debug info for Wine PE image_map.226// Load PDB debug info for Wine PE image_map.
227// pub fn loadPdbDebuginfo(fd, ptr, total_size, delta) void {227// pub fn loadPdbDebuginfo(fd, ptr, total_size, delta) void {
228// doClientRequestStmt(ClientRequest.LoadPdbDebuginfo,228// doClientRequestStmt(.LoadPdbDebuginfo,
229// fd, ptr, total_size, delta,229// fd, ptr, total_size, delta,
230// 0);230// 0);
231// }231// }
...@@ -235,7 +235,7 @@ pub fn stackChange(id: usize, newstack: []u8) void {...@@ -235,7 +235,7 @@ pub fn stackChange(id: usize, newstack: []u8) void {
235/// result will be dumped in there and is guaranteed to be zero235/// result will be dumped in there and is guaranteed to be zero
236/// terminated. If no info is found, the first byte is set to zero.236/// terminated. If no info is found, the first byte is set to zero.
237pub fn mapIpToSrcloc(addr: *const u8, buf64: [64]u8) usize {237pub fn mapIpToSrcloc(addr: *const u8, buf64: [64]u8) usize {
238 return doClientRequestExpr(0, ClientRequest.MapIpToSrcloc, @ptrToInt(addr), @ptrToInt(&buf64[0]), 0, 0, 0);238 return doClientRequestExpr(0, .MapIpToSrcloc, @ptrToInt(addr), @ptrToInt(&buf64[0]), 0, 0, 0);
239}239}
240240
241/// Disable error reporting for this thread. Behaves in a stack like241/// Disable error reporting for this thread. Behaves in a stack like
...@@ -247,12 +247,12 @@ pub fn mapIpToSrcloc(addr: *const u8, buf64: [64]u8) usize {...@@ -247,12 +247,12 @@ pub fn mapIpToSrcloc(addr: *const u8, buf64: [64]u8) usize {
247/// reporting. Child threads do not inherit this setting from their247/// reporting. Child threads do not inherit this setting from their
248/// parents -- they are always created with reporting enabled.248/// parents -- they are always created with reporting enabled.
249pub fn disableErrorReporting() void {249pub fn disableErrorReporting() void {
250 doClientRequestStmt(ClientRequest.ChangeErrDisablement, 1, 0, 0, 0, 0);250 doClientRequestStmt(.ChangeErrDisablement, 1, 0, 0, 0, 0);
251}251}
252252
253/// Re-enable error reporting, (see disableErrorReporting())253/// Re-enable error reporting, (see disableErrorReporting())
254pub fn enableErrorReporting() void {254pub fn enableErrorReporting() void {
255 doClientRequestStmt(ClientRequest.ChangeErrDisablement, math.maxInt(usize), 0, 0, 0, 0);255 doClientRequestStmt(.ChangeErrDisablement, math.maxInt(usize), 0, 0, 0, 0);
256}256}
257257
258/// Execute a monitor command from the client program.258/// Execute a monitor command from the client program.
...@@ -261,7 +261,7 @@ pub fn enableErrorReporting() void {...@@ -261,7 +261,7 @@ pub fn enableErrorReporting() void {
261/// If no connection is opened, output will go to the log output.261/// If no connection is opened, output will go to the log output.
262/// Returns 1 if command not recognised, 0 otherwise.262/// Returns 1 if command not recognised, 0 otherwise.
263pub fn monitorCommand(command: [*]u8) bool {263pub fn monitorCommand(command: [*]u8) bool {
264 return doClientRequestExpr(0, ClientRequest.GdbMonitorCommand, @ptrToInt(command.ptr), 0, 0, 0, 0) != 0;264 return doClientRequestExpr(0, .GdbMonitorCommand, @ptrToInt(command.ptr), 0, 0, 0, 0) != 0;
265}265}
266266
267pub const memcheck = @import("valgrind/memcheck.zig");267pub const memcheck = @import("valgrind/memcheck.zig");
lib/std/valgrind/callgrind.zig+6-6
...@@ -20,7 +20,7 @@ fn doCallgrindClientRequestStmt(request: CallgrindClientRequest, a1: usize, a2:...@@ -20,7 +20,7 @@ fn doCallgrindClientRequestStmt(request: CallgrindClientRequest, a1: usize, a2:
2020
21/// Dump current state of cost centers, and zero them afterwards21/// Dump current state of cost centers, and zero them afterwards
22pub fn dumpStats() void {22pub fn dumpStats() void {
23 doCallgrindClientRequestStmt(CallgrindClientRequest.DumpStats, 0, 0, 0, 0, 0);23 doCallgrindClientRequestStmt(.DumpStats, 0, 0, 0, 0, 0);
24}24}
2525
26/// Dump current state of cost centers, and zero them afterwards.26/// Dump current state of cost centers, and zero them afterwards.
...@@ -28,12 +28,12 @@ pub fn dumpStats() void {...@@ -28,12 +28,12 @@ pub fn dumpStats() void {
28/// the dump. This string is written as a description field into the28/// the dump. This string is written as a description field into the
29/// profile data dump.29/// profile data dump.
30pub fn dumpStatsAt(pos_str: [*]u8) void {30pub fn dumpStatsAt(pos_str: [*]u8) void {
31 doCallgrindClientRequestStmt(CallgrindClientRequest.DumpStatsAt, @ptrToInt(pos_str), 0, 0, 0, 0);31 doCallgrindClientRequestStmt(.DumpStatsAt, @ptrToInt(pos_str), 0, 0, 0, 0);
32}32}
3333
34/// Zero cost centers34/// Zero cost centers
35pub fn zeroStats() void {35pub fn zeroStats() void {
36 doCallgrindClientRequestStmt(CallgrindClientRequest.ZeroStats, 0, 0, 0, 0, 0);36 doCallgrindClientRequestStmt(.ZeroStats, 0, 0, 0, 0, 0);
37}37}
3838
39/// Toggles collection state.39/// Toggles collection state.
...@@ -41,7 +41,7 @@ pub fn zeroStats() void {...@@ -41,7 +41,7 @@ pub fn zeroStats() void {
41/// should be noted or if they are to be ignored. Events are noted41/// should be noted or if they are to be ignored. Events are noted
42/// by increment of counters in a cost center42/// by increment of counters in a cost center
43pub fn toggleCollect() void {43pub fn toggleCollect() void {
44 doCallgrindClientRequestStmt(CallgrindClientRequest.ToggleCollect, 0, 0, 0, 0, 0);44 doCallgrindClientRequestStmt(.ToggleCollect, 0, 0, 0, 0, 0);
45}45}
4646
47/// Start full callgrind instrumentation if not already switched on.47/// Start full callgrind instrumentation if not already switched on.
...@@ -49,7 +49,7 @@ pub fn toggleCollect() void {...@@ -49,7 +49,7 @@ pub fn toggleCollect() void {
49/// this will lead to an artificial cache warmup phase afterwards with49/// this will lead to an artificial cache warmup phase afterwards with
50/// cache misses which would not have happened in reality.50/// cache misses which would not have happened in reality.
51pub fn startInstrumentation() void {51pub fn startInstrumentation() void {
52 doCallgrindClientRequestStmt(CallgrindClientRequest.StartInstrumentation, 0, 0, 0, 0, 0);52 doCallgrindClientRequestStmt(.StartInstrumentation, 0, 0, 0, 0, 0);
53}53}
5454
55/// Stop full callgrind instrumentation if not already switched off.55/// Stop full callgrind instrumentation if not already switched off.
...@@ -60,5 +60,5 @@ pub fn startInstrumentation() void {...@@ -60,5 +60,5 @@ pub fn startInstrumentation() void {
60/// To start Callgrind in this mode to ignore the setup phase, use60/// To start Callgrind in this mode to ignore the setup phase, use
61/// the option "--instr-atstart=no".61/// the option "--instr-atstart=no".
62pub fn stopInstrumentation() void {62pub fn stopInstrumentation() void {
63 doCallgrindClientRequestStmt(CallgrindClientRequest.StopInstrumentation, 0, 0, 0, 0, 0);63 doCallgrindClientRequestStmt(.StopInstrumentation, 0, 0, 0, 0, 0);
64}64}
lib/std/valgrind/memcheck.zig+18-18
...@@ -31,7 +31,7 @@ fn doMemCheckClientRequestStmt(request: MemCheckClientRequest, a1: usize, a2: us...@@ -31,7 +31,7 @@ fn doMemCheckClientRequestStmt(request: MemCheckClientRequest, a1: usize, a2: us
31/// This returns -1 when run on Valgrind and 0 otherwise.31/// This returns -1 when run on Valgrind and 0 otherwise.
32pub fn makeMemNoAccess(qzz: []u8) i1 {32pub fn makeMemNoAccess(qzz: []u8) i1 {
33 return @intCast(i1, doMemCheckClientRequestExpr(0, // default return33 return @intCast(i1, doMemCheckClientRequestExpr(0, // default return
34 MemCheckClientRequest.MakeMemNoAccess, @ptrToInt(qzz.ptr), qzz.len, 0, 0, 0));34 .MakeMemNoAccess, @ptrToInt(qzz.ptr), qzz.len, 0, 0, 0));
35}35}
3636
37/// Similarly, mark memory at qzz.ptr as addressable but undefined37/// Similarly, mark memory at qzz.ptr as addressable but undefined
...@@ -39,7 +39,7 @@ pub fn makeMemNoAccess(qzz: []u8) i1 {...@@ -39,7 +39,7 @@ pub fn makeMemNoAccess(qzz: []u8) i1 {
39/// This returns -1 when run on Valgrind and 0 otherwise.39/// This returns -1 when run on Valgrind and 0 otherwise.
40pub fn makeMemUndefined(qzz: []u8) i1 {40pub fn makeMemUndefined(qzz: []u8) i1 {
41 return @intCast(i1, doMemCheckClientRequestExpr(0, // default return41 return @intCast(i1, doMemCheckClientRequestExpr(0, // default return
42 MemCheckClientRequest.MakeMemUndefined, @ptrToInt(qzz.ptr), qzz.len, 0, 0, 0));42 .MakeMemUndefined, @ptrToInt(qzz.ptr), qzz.len, 0, 0, 0));
43}43}
4444
45/// Similarly, mark memory at qzz.ptr as addressable and defined45/// Similarly, mark memory at qzz.ptr as addressable and defined
...@@ -47,7 +47,7 @@ pub fn makeMemUndefined(qzz: []u8) i1 {...@@ -47,7 +47,7 @@ pub fn makeMemUndefined(qzz: []u8) i1 {
47pub fn makeMemDefined(qzz: []u8) i1 {47pub fn makeMemDefined(qzz: []u8) i1 {
48 // This returns -1 when run on Valgrind and 0 otherwise.48 // This returns -1 when run on Valgrind and 0 otherwise.
49 return @intCast(i1, doMemCheckClientRequestExpr(0, // default return49 return @intCast(i1, doMemCheckClientRequestExpr(0, // default return
50 MemCheckClientRequest.MakeMemDefined, @ptrToInt(qzz.ptr), qzz.len, 0, 0, 0));50 .MakeMemDefined, @ptrToInt(qzz.ptr), qzz.len, 0, 0, 0));
51}51}
5252
53/// Similar to makeMemDefined except that addressability is53/// Similar to makeMemDefined except that addressability is
...@@ -56,7 +56,7 @@ pub fn makeMemDefined(qzz: []u8) i1 {...@@ -56,7 +56,7 @@ pub fn makeMemDefined(qzz: []u8) i1 {
56/// This returns -1 when run on Valgrind and 0 otherwise.56/// This returns -1 when run on Valgrind and 0 otherwise.
57pub fn makeMemDefinedIfAddressable(qzz: []u8) i1 {57pub fn makeMemDefinedIfAddressable(qzz: []u8) i1 {
58 return @intCast(i1, doMemCheckClientRequestExpr(0, // default return58 return @intCast(i1, doMemCheckClientRequestExpr(0, // default return
59 MemCheckClientRequest.MakeMemDefinedIfAddressable, @ptrToInt(qzz.ptr), qzz.len, 0, 0, 0));59 .MakeMemDefinedIfAddressable, @ptrToInt(qzz.ptr), qzz.len, 0, 0, 0));
60}60}
6161
62/// Create a block-description handle. The description is an ascii62/// Create a block-description handle. The description is an ascii
...@@ -65,14 +65,14 @@ pub fn makeMemDefinedIfAddressable(qzz: []u8) i1 {...@@ -65,14 +65,14 @@ pub fn makeMemDefinedIfAddressable(qzz: []u8) i1 {
65/// properties of the memory range.65/// properties of the memory range.
66pub fn createBlock(qzz: []u8, desc: [*]u8) usize {66pub fn createBlock(qzz: []u8, desc: [*]u8) usize {
67 return doMemCheckClientRequestExpr(0, // default return67 return doMemCheckClientRequestExpr(0, // default return
68 MemCheckClientRequest.CreateBlock, @ptrToInt(qzz.ptr), qzz.len, @ptrToInt(desc), 0, 0);68 .CreateBlock, @ptrToInt(qzz.ptr), qzz.len, @ptrToInt(desc), 0, 0);
69}69}
7070
71/// Discard a block-description-handle. Returns 1 for an71/// Discard a block-description-handle. Returns 1 for an
72/// invalid handle, 0 for a valid handle.72/// invalid handle, 0 for a valid handle.
73pub fn discard(blkindex) bool {73pub fn discard(blkindex) bool {
74 return doMemCheckClientRequestExpr(0, // default return74 return doMemCheckClientRequestExpr(0, // default return
75 MemCheckClientRequest.Discard, 0, blkindex, 0, 0, 0) != 0;75 .Discard, 0, blkindex, 0, 0, 0) != 0;
76}76}
7777
78/// Check that memory at qzz.ptr is addressable for qzz.len bytes.78/// Check that memory at qzz.ptr is addressable for qzz.len bytes.
...@@ -80,7 +80,7 @@ pub fn discard(blkindex) bool {...@@ -80,7 +80,7 @@ pub fn discard(blkindex) bool {
80/// error message and returns the address of the first offending byte.80/// error message and returns the address of the first offending byte.
81/// Otherwise it returns zero.81/// Otherwise it returns zero.
82pub fn checkMemIsAddressable(qzz: []u8) usize {82pub fn checkMemIsAddressable(qzz: []u8) usize {
83 return doMemCheckClientRequestExpr(0, MemCheckClientRequest.CheckMemIsAddressable, @ptrToInt(qzz.ptr), qzz.len, 0, 0, 0);83 return doMemCheckClientRequestExpr(0, .CheckMemIsAddressable, @ptrToInt(qzz.ptr), qzz.len, 0, 0, 0);
84}84}
8585
86/// Check that memory at qzz.ptr is addressable and defined for86/// Check that memory at qzz.ptr is addressable and defined for
...@@ -88,31 +88,31 @@ pub fn checkMemIsAddressable(qzz: []u8) usize {...@@ -88,31 +88,31 @@ pub fn checkMemIsAddressable(qzz: []u8) usize {
88/// established, Valgrind prints an error message and returns the88/// established, Valgrind prints an error message and returns the
89/// address of the first offending byte. Otherwise it returns zero.89/// address of the first offending byte. Otherwise it returns zero.
90pub fn checkMemIsDefined(qzz: []u8) usize {90pub fn checkMemIsDefined(qzz: []u8) usize {
91 return doMemCheckClientRequestExpr(0, MemCheckClientRequest.CheckMemIsDefined, @ptrToInt(qzz.ptr), qzz.len, 0, 0, 0);91 return doMemCheckClientRequestExpr(0, .CheckMemIsDefined, @ptrToInt(qzz.ptr), qzz.len, 0, 0, 0);
92}92}
9393
94/// Do a full memory leak check (like --leak-check=full) mid-execution.94/// Do a full memory leak check (like --leak-check=full) mid-execution.
95pub fn doLeakCheck() void {95pub fn doLeakCheck() void {
96 doMemCheckClientRequestStmt(MemCheckClientRequest.DO_LEAK_CHECK, 0, 0, 0, 0, 0);96 doMemCheckClientRequestStmt(.DO_LEAK_CHECK, 0, 0, 0, 0, 0);
97}97}
9898
99/// Same as doLeakCheck() but only showing the entries for99/// Same as doLeakCheck() but only showing the entries for
100/// which there was an increase in leaked bytes or leaked nr of blocks100/// which there was an increase in leaked bytes or leaked nr of blocks
101/// since the previous leak search.101/// since the previous leak search.
102pub fn doAddedLeakCheck() void {102pub fn doAddedLeakCheck() void {
103 doMemCheckClientRequestStmt(MemCheckClientRequest.DO_LEAK_CHECK, 0, 1, 0, 0, 0);103 doMemCheckClientRequestStmt(.DO_LEAK_CHECK, 0, 1, 0, 0, 0);
104}104}
105105
106/// Same as doAddedLeakCheck() but showing entries with106/// Same as doAddedLeakCheck() but showing entries with
107/// increased or decreased leaked bytes/blocks since previous leak107/// increased or decreased leaked bytes/blocks since previous leak
108/// search.108/// search.
109pub fn doChangedLeakCheck() void {109pub fn doChangedLeakCheck() void {
110 doMemCheckClientRequestStmt(MemCheckClientRequest.DO_LEAK_CHECK, 0, 2, 0, 0, 0);110 doMemCheckClientRequestStmt(.DO_LEAK_CHECK, 0, 2, 0, 0, 0);
111}111}
112112
113/// Do a summary memory leak check (like --leak-check=summary) mid-execution.113/// Do a summary memory leak check (like --leak-check=summary) mid-execution.
114pub fn doQuickLeakCheck() void {114pub fn doQuickLeakCheck() void {
115 doMemCheckClientRequestStmt(MemCheckClientRequest.DO_LEAK_CHECK, 1, 0, 0, 0, 0);115 doMemCheckClientRequestStmt(.DO_LEAK_CHECK, 1, 0, 0, 0, 0);
116}116}
117117
118/// Return number of leaked, dubious, reachable and suppressed bytes found by118/// Return number of leaked, dubious, reachable and suppressed bytes found by
...@@ -131,7 +131,7 @@ pub fn countLeaks() CountResult {...@@ -131,7 +131,7 @@ pub fn countLeaks() CountResult {
131 .reachable = 0,131 .reachable = 0,
132 .suppressed = 0,132 .suppressed = 0,
133 };133 };
134 doMemCheckClientRequestStmt(MemCheckClientRequest.CountLeaks, &res.leaked, &res.dubious, &res.reachable, &res.suppressed, 0);134 doMemCheckClientRequestStmt(.CountLeaks, &res.leaked, &res.dubious, &res.reachable, &res.suppressed, 0);
135 return res;135 return res;
136}136}
137137
...@@ -142,7 +142,7 @@ pub fn countLeakBlocks() CountResult {...@@ -142,7 +142,7 @@ pub fn countLeakBlocks() CountResult {
142 .reachable = 0,142 .reachable = 0,
143 .suppressed = 0,143 .suppressed = 0,
144 };144 };
145 doMemCheckClientRequestStmt(MemCheckClientRequest.CountLeakBlocks, &res.leaked, &res.dubious, &res.reachable, &res.suppressed, 0);145 doMemCheckClientRequestStmt(.CountLeakBlocks, &res.leaked, &res.dubious, &res.reachable, &res.suppressed, 0);
146 return res;146 return res;
147}147}
148148
...@@ -156,7 +156,7 @@ pub fn countLeakBlocks() CountResult {...@@ -156,7 +156,7 @@ pub fn countLeakBlocks() CountResult {
156/// impossible to segfault your system by using this call.156/// impossible to segfault your system by using this call.
157pub fn getVbits(zza: []u8, zzvbits: []u8) u2 {157pub fn getVbits(zza: []u8, zzvbits: []u8) u2 {
158 std.debug.assert(zzvbits.len >= zza.len / 8);158 std.debug.assert(zzvbits.len >= zza.len / 8);
159 return @intCast(u2, doMemCheckClientRequestExpr(0, MemCheckClientRequest.GetVbits, @ptrToInt(zza.ptr), @ptrToInt(zzvbits), zza.len, 0, 0));159 return @intCast(u2, doMemCheckClientRequestExpr(0, .GetVbits, @ptrToInt(zza.ptr), @ptrToInt(zzvbits), zza.len, 0, 0));
160}160}
161161
162/// Set the validity data for addresses zza, copying it162/// Set the validity data for addresses zza, copying it
...@@ -169,17 +169,17 @@ pub fn getVbits(zza: []u8, zzvbits: []u8) u2 {...@@ -169,17 +169,17 @@ pub fn getVbits(zza: []u8, zzvbits: []u8) u2 {
169/// impossible to segfault your system by using this call.169/// impossible to segfault your system by using this call.
170pub fn setVbits(zzvbits: []u8, zza: []u8) u2 {170pub fn setVbits(zzvbits: []u8, zza: []u8) u2 {
171 std.debug.assert(zzvbits.len >= zza.len / 8);171 std.debug.assert(zzvbits.len >= zza.len / 8);
172 return @intCast(u2, doMemCheckClientRequestExpr(0, MemCheckClientRequest.SetVbits, @ptrToInt(zza.ptr), @ptrToInt(zzvbits), zza.len, 0, 0));172 return @intCast(u2, doMemCheckClientRequestExpr(0, .SetVbits, @ptrToInt(zza.ptr), @ptrToInt(zzvbits), zza.len, 0, 0));
173}173}
174174
175/// Disable and re-enable reporting of addressing errors in the175/// Disable and re-enable reporting of addressing errors in the
176/// specified address range.176/// specified address range.
177pub fn disableAddrErrorReportingInRange(qzz: []u8) usize {177pub fn disableAddrErrorReportingInRange(qzz: []u8) usize {
178 return doMemCheckClientRequestExpr(0, // default return178 return doMemCheckClientRequestExpr(0, // default return
179 MemCheckClientRequest.DisableAddrErrorReportingInRange, @ptrToInt(qzz.ptr), qzz.len, 0, 0, 0);179 .DisableAddrErrorReportingInRange, @ptrToInt(qzz.ptr), qzz.len, 0, 0, 0);
180}180}
181181
182pub fn enableAddrErrorReportingInRange(qzz: []u8) usize {182pub fn enableAddrErrorReportingInRange(qzz: []u8) usize {
183 return doMemCheckClientRequestExpr(0, // default return183 return doMemCheckClientRequestExpr(0, // default return
184 MemCheckClientRequest.EnableAddrErrorReportingInRange, @ptrToInt(qzz.ptr), qzz.len, 0, 0, 0);184 .EnableAddrErrorReportingInRange, @ptrToInt(qzz.ptr), qzz.len, 0, 0, 0);
185}185}