Encodes technical requirements for rsyslog modules, including concurrency, metadata, and initialization.
This skill captures the essential technical patterns for authoring and maintaining rsyslog modules (plugins/contrib).
assert() + if).pData (shared) vs WID (per-worker).BEGINmodInit, CODESTARTmodInit, etc.
Rsyslog v8 has a high-concurrency worker model.
pData): Mutable state shared across workers MUST be protected by a mutex in pData.WID): Never share wrkrInstanceData_t.assert(pData != NULL);
if (pData == NULL) {
// Handle error gracefully
}
Every module must implement and register standard entry points:
modInit(): Initialize static data and registry interfaces.modExit(): Finalize and cleanup.beginTransaction() / commitTransaction(): For efficient batch-based output.MODULE_METADATA.yaml in the module directory.doc/ai/module_map.yaml in sync with locking and concurrency changes.plugins/Makefile.am and configure.ac when adding new modules.tests/Makefile.am. See the rsyslog_test skill for details. This is critical for make distcheck validity.MODULE_TYPE(eMOD_OUT) and other macros from runtime/module-template.h.rsyslog_build: For compiling the module.rsyslog_test: For creating module-specific smoke tests.rsyslog_doc: For documentation requirements.