version 1.11, 2025/04/13 04:22:43
|
version 1.14, 2025/05/14 12:22:04
|
Line 24
|
Line 24
|
* along with FreeM. If not, see <https://www.gnu.org/licenses/>. |
* along with FreeM. If not, see <https://www.gnu.org/licenses/>. |
* |
* |
* $Log$ |
* $Log$ |
|
* Revision 1.14 2025/05/14 12:22:04 snw |
|
* Further work on shared memory |
|
* |
|
* Revision 1.13 2025/04/19 21:52:20 snw |
|
* Remove extraneous symbol table debugging message |
|
* |
|
* Revision 1.12 2025/04/14 19:56:27 snw |
|
* Working towards FreeBSD fix |
|
* |
* Revision 1.11 2025/04/13 04:22:43 snw |
* Revision 1.11 2025/04/13 04:22:43 snw |
* Fix snprintf calls |
* Fix snprintf calls |
* |
* |
Line 65
|
Line 74
|
#include "merr.h" |
#include "merr.h" |
#include "consttbl.h" |
#include "consttbl.h" |
#include "shmmgr.h" |
#include "shmmgr.h" |
|
#include "log.h" |
|
|
/* Turn this on to get tons of lovely debugging messages about |
/* Turn this on to get tons of lovely debugging messages about |
symbol-table calls */ |
symbol-table calls */ |
Line 163 void symtab_init (void)
|
Line 173 void symtab_init (void)
|
mbpartition = (char *) shm_alloc ((size_t) PSIZE + 2); |
mbpartition = (char *) shm_alloc ((size_t) PSIZE + 2); |
if (mbpartition != NULL) { |
if (mbpartition != NULL) { |
shm_config->hdr->use_mb_globals = TRUE; |
shm_config->hdr->use_mb_globals = TRUE; |
|
shm_config->hdr->partition = mbpartition; |
} |
} |
else { |
else { |
fprintf (stderr, "symtab_init: falling back to global-backed structured system variables\r\n"); |
fprintf (stderr, "symtab_init: falling back to global-backed structured system variables\r\n"); |
shm_config->hdr->use_mb_globals = FALSE; |
shm_config->hdr->use_mb_globals = FALSE; |
} |
} |
|
|
shm_config->hdr->partition = mbpartition; |
|
|
|
if (symtab_get_sem ()) { |
if (symtab_get_sem ()) { |
for (i = 0; i < 128; i++) shm_config->hdr->alphptr[i] = 0L; |
for (i = 0; i < 128; i++) shm_config->hdr->alphptr[i] = 0L; |
Line 184 void symtab_init (void)
|
Line 193 void symtab_init (void)
|
fprintf (stderr, "symtab_init: could not attach to symbol table semaphore\r\n"); |
fprintf (stderr, "symtab_init: could not attach to symbol table semaphore\r\n"); |
exit (1); |
exit (1); |
} |
} |
|
|
mbpartition = shm_config->hdr->partition; |
if (shm_config->hdr->use_mb_globals == TRUE) { |
|
mbpartition = SOA(shm_config->hdr->partition); |
|
} |
|
|
symtab_release_sem (); |
symtab_release_sem (); |
} |
} |
Line 213 short symtab_get_sem(void)
|
Line 224 short symtab_get_sem(void)
|
sleep (1); |
sleep (1); |
|
|
} |
} |
fprintf (stderr, "symtab_get_sem: fail\r\n"); |
logprintf (FM_LOG_ERROR, "symtab_get_sem: fail"); |
|
|
have_symtab_sem = FALSE; |
have_symtab_sem = FALSE; |
return FALSE; |
return FALSE; |
Line 239 void symtab_shm (short action, char *key
|
Line 250 void symtab_shm (short action, char *key
|
register int i; |
register int i; |
char *old_partition = partition; |
char *old_partition = partition; |
|
|
|
global (action, key, data); |
|
return; |
|
|
if (shm_config->hdr->use_mb_globals == FALSE) { |
if (shm_config->hdr->use_mb_globals == FALSE) { |
symtab_bltin (action, key, data); |
symtab_bltin (action, key, data); |
return; |
return; |
Line 643 no_with:
|
Line 657 no_with:
|
|
|
} while (i < PSIZE); |
} while (i < PSIZE); |
} |
} |
else { |
|
printf ("alphptr not found\r\n"); |
|
} |
|
|
|
merr_raise (M6); |
merr_raise (M6); |
data[0] = EOL; |
data[0] = EOL; |
|
|
return; |
return; |
|
|
|
|
|
|
|
|
|
|
case set_sym: /* store/create variable */ |
case set_sym: /* store/create variable */ |
|
|
|
|