#include <sys/wait.h>
#include "util.h"
#include "unaligned.h"
+#include "magic.h"
#define MIN_BUFFER_SIZE 64
#define DEFAULT_BUFFER_SIZE 4096
char *d;
d=strdup(s);
if (!d) {
- fatal_perror(message);
+ fatal_perror("%s",message);
}
return d;
}
void *r;
r=malloc(size);
if (!r) {
- fatal_perror(message);
+ fatal_perror("%s",message);
}
return r;
}
void vslilog(struct log_if *lf, int priority, const char *message, va_list ap)
{
- lf->vlog(lf->st,priority,message,ap);
+ lf->vlogfn(lf->st,priority,message,ap);
}
void slilog(struct log_if *lf, int priority, const char *message, ...)
void buffer_init(struct buffer_if *buffer, int32_t max_start_pad)
{
+ assert(max_start_pad<=buffer->len);
buffer->start=buffer->base+max_start_pad;
buffer->size=0;
}
return new_closure(&st->cl);
}
+void send_nak(const struct comm_addr *dest, uint32_t our_index,
+ uint32_t their_index, uint32_t msgtype,
+ struct buffer_if *buf, const char *logwhy)
+{
+ buffer_init(buf,calculate_max_start_pad());
+ buf_append_uint32(buf,their_index);
+ buf_append_uint32(buf,our_index);
+ buf_append_uint32(buf,LABEL_NAK);
+ if (logwhy)
+ Message(M_INFO,"%s: %08"PRIx32"<-%08"PRIx32": %08"PRIx32":"
+ " %s; sending NAK\n",
+ dest->comm->addr_to_string(dest->comm->st,dest),
+ our_index, their_index, msgtype, logwhy);
+ dest->comm->sendmsg(dest->comm->st, buf, dest);
+}
+
+int consttime_memeq(const void *s1in, const void *s2in, size_t n)
+{
+ const uint8_t *s1=s1in, *s2=s2in;
+ register volatile uint8_t accumulator=0;
+
+ while (n-- > 0) {
+ accumulator |= (*s1++ ^ *s2++);
+ }
+ accumulator |= accumulator >> 4; /* constant-time */
+ accumulator |= accumulator >> 2; /* boolean canonicalisation */
+ accumulator |= accumulator >> 1;
+ accumulator &= 1;
+ accumulator ^= 1;
+ return accumulator;
+}
+
void util_module(dict_t *dict)
{
add_closure(dict,"sysbuffer",buffer_apply);
}
+
+void update_max_start_pad(int32_t *our_module_global, int32_t our_instance)
+{
+ if (*our_module_global < our_instance)
+ *our_module_global=our_instance;
+}
+
+int32_t transform_max_start_pad, comm_max_start_pad;
+
+int32_t calculate_max_start_pad(void)
+{
+ return
+ site_max_start_pad +
+ transform_max_start_pad +
+ comm_max_start_pad;
+}