Commit a3985658 authored by John P. Willis's avatar John P. Willis
Browse files

Make LOCK ssv non-writable, add LOCK ssv to manual.

parent 6fdb1bbf
Pipeline #705 passed with stage
in 1 minute and 24 seconds
......@@ -748,3 +748,8 @@ VERSION 0.49.1
VERSION 0.50.0
Add support for the LOCK ssv
********************************************************************************
VERSION 0.50.1
Make LOCK ssv non-writable, add LOCK ssv to manual.
......@@ -37,7 +37,7 @@
#
#
AC_INIT([freem],[0.50.0],[jpw@coherent-logic.com])
AC_INIT([freem],[0.50.1],[jpw@coherent-logic.com])
AC_CONFIG_HEADERS([src/config.h])
AC_CONFIG_MACRO_DIRS([m4])
......
......@@ -4,7 +4,7 @@
@settitle The FreeM Manual
@copying
This manual is for FreeM, (version 0.50.0), which is a free and open-source implementation of the M programming language and database system.
This manual is for FreeM, (version 0.50.1), which is a free and open-source implementation of the M programming language and database system.
Copyright @copyright{} 2014-2021 Coherent Logic Development LLC
......@@ -18,7 +18,7 @@ Permission is granted to copy, distribute and/or modify this document under the
@title The FreeM Manual
@subtitle @sc{The Official Manual of FreeM}
@subtitle Version 0.50.0
@subtitle Version 0.50.1
@c@vskip 10pt
@c@center @image{freem-logo-sm,,,,.png}
@author John P. Willis
......@@ -101,14 +101,16 @@ In February of 2020, work began in earnest to build a development and support in
FreeM is not yet production-ready. There are several show-stopping bugs that preclude a general release for public use:
@itemize @bullet
@item
SSVs, aside from @code{^$JOB}, @code{^$DEVICE}, @code{^$EVENT}, and @code{^$ZPROCESS} are not implemented.
@item
@code{VIEW} commands and @code{$VIEW} functions are used extensively to configure and inspect the run-time behavior of FreeM, rather than the "canonical" SSV-based approach.
@item
Server sockets are not yet implemented.
@item
There are some situations that can result in segmentation faults and/or lock-ups.
@end itemize
@section Contributors
......@@ -280,7 +282,7 @@ $ chmod +x @emph{myscript.m}
The FreeM direct-mode environment is the mode entered when FreeM is invoked without the use of @option{-r @emph{<entryref>}} or @option{--routine=@emph{<entryref>}}:
@example
Coherent Logic Development FreeM version 0.50.0 (x86_64-pc-linux-gnu)
Coherent Logic Development FreeM version 0.50.1 (x86_64-pc-linux-gnu)
Copyright (C) 2014, 2020, 2021 Coherent Logic Development LLC
......@@ -1696,7 +1698,7 @@ In the above @emph{inclusive} form, @code{KVALUE} will kill the data values at e
@cartouche
@quotation
@emph{Note}
The below @emph{argumentless} and @emph{exclusive} forms of @code{KVALUE} are not implemented in FreeM, as of version 0.50.0, but are planned for a future release.
The below @emph{argumentless} and @emph{exclusive} forms of @code{KVALUE} are not implemented in FreeM, as of version 0.50.1, but are planned for a future release.
@end quotation
@end cartouche
......@@ -3002,7 +3004,9 @@ Attempting to @code{SET} this node to values other than @code{FIXED} or @code{IE
@cindex ^$LOCK
@cindex structured system variables, ^$LOCK
The @code{^$LOCK} SSV is not yet implemented.
The first-level subscript of @code{^$LOCK} is a lock name. The value at each node is the PID which owns the lock, a comma, and the lock counter for the locked resource.
Attempting to @code{SET} or @code{KILL} any node in @code{^$LOCK} will raise error @code{M29}.
@section ^$ROUTINE
@cindex ^$ROUTINE
......
......@@ -70,7 +70,7 @@ void ssvn_lock_add(char *key, pid_t owner_job, int count)
}
snprintf (k_buf, STRLEN - 1, "^$LOCK\202%s\201", &(t_buf[1]));
snprintf (k_buf, STRLEN - 1, "^$LOCK\202%s\201", t_buf);
snprintf (d_buf, STRLEN - 1, "%ld,%d\201\0", owner_job, count);
global (set_sym, k_buf, d_buf);
......@@ -111,7 +111,7 @@ void ssvn_lock_remove(char *key)
}
snprintf (k_buf, STRLEN - 1, "^$LOCK\202%s\201", &(t_buf[1]));
snprintf (k_buf, STRLEN - 1, "^$LOCK\202%s\201", t_buf);
snprintf (d_buf, STRLEN - 1, " \201");
global (kill_sym, k_buf, d_buf);
......@@ -123,8 +123,11 @@ void ssvn_lock(short action, char *key, char *data)
switch (action) {
case set_sym:
case kill_sym:
//TODO: remove lock
ierr = M29;
return;
default:
global (action, key, data);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment