Function | Package: mp | ToC | DocOverview | CGDoc | RelNotes | FAQ | Index | PermutedIndex
| Allegro CL version 10.1 Unrevised from 10.0 to 10.1. 10.0 version

## memlog-init

Arguments: &key size width stop start wait yield-rate yield

This function initializes the current memory log with possibly new values for size and width. The return value is the new state of the initialized current log, or `nil` if nothing was done.

If the wait argument is non-`nil`, wait until the current log becomes available in the required state. If the wait argument is a number, wait that many seconds and if the time runs out, return `nil`. The default is to wait up to one second; this delay should be sufficient if an active log is in the middle of a logging call. If the wait argument is `nil`, return `nil` if the log is not in the required state.

When the stop argument is is non-`nil` (the default), stop logging when logging is active. Once logging is stopped, any current entries are discarded and the log is initialized. If the stop argument is `nil`, the log must already be stopped or `nil` is returned.

The start argument specifies the state of the current memory log after this operation:

- `nil` -- Leave the log in the `:stopped` state. This is the default.
- `:cond` -- Leave the log in the same state that was in effect on entry.
- other non-`nil` -- Leave the log in the `:ready` state.

The size argument specifes the maximum number of entries in the log. When the maximum is reached, older entries are overwritten with newer entries. If the size is not specified, the most recently used size continues in effect. The default size is 1000.

The width argument specifies the number of data values in each entry. If the width is not specified, the most recently used width continues in effect. The default width is 4.

All the memory locking operations must synchronize their behavior on a lock in memory. Spinning on the lock is most efficient in an SMP architecture, but when there are more threads than processors, spinning may be counterproductive. If a lock cannot be acquired in N attempts, the memlog operations yield to another thread and try again for N attempts. The yield-rate argument specifies a value for N. The default is 5.

The yield argument is tested by the memlog call only. If non-`nil`, the default, then one yield is performed if necessary to obtain a lock on the log object. If `nil`, then no yield call is made at all. Thus if the log is initialized with yield-rate=1 and yield=`nil`, a log entry will be made only when the log is available immediately; this is the least disruptive setting of the memory log. The skipped count returned by memlog-state increases as the waiting in memlog is made more restrictive.

See Memlog: A Facility for Minimally Intrusive Monitoring of Complex Application Behavior in smp.htm for more information.

See multiprocessing.htm for general information on multiprocessing in Allegro CL.

Copyright (c) 1998-2022, Franz Inc. Lafayette, CA., USA. All rights reserved.
This page was not revised from the 10.0 page.
Created 2019.8.20.

|  | ToC | DocOverview | CGDoc | RelNotes | FAQ | Index | PermutedIndex
| Allegro CL version 10.1 Unrevised from 10.0 to 10.1. 10.0 version