dist_doc_examples_rcu_flavor_qsbr_DATA = \
rcu-flavor-qsbr/Makefile \
+ rcu-flavor-qsbr/Makefile.rcu-flavor-qsbr \
rcu-flavor-qsbr/rcu-flavor-qsbr.c
dist_doc_examples_DATA = \
#
# This makefile is purposefully kept simple to support GNU and BSD make.
-CC = gcc
-LIBS = -lurcu-qsbr
-CFLAGS = -g -O2 -Wall
-OBJECTS = rcu-flavor-qsbr.o
-
-all: rcu-flavor-qsbr
-
-rcu-flavor-qsbr: $(OBJECTS)
- $(CC) $(CFLAGS) $(LDFLAGS) $(AM_CFLAGS) $(AM_LDFLAGS) \
- $(LIBS) -o $@ $(OBJECTS)
-
-rcu-flavor-qsbr.o: rcu-flavor-qsbr.c
- $(CC) $(CPPFLAGS) $(CFLAGS) $(AM_CPPFLAGS) $(AM_CFLAGS) \
- -c -o $@ $<
+all:
+ $(MAKE) -f Makefile.rcu-flavor-qsbr
.PHONY: clean
clean:
- rm -f *.o rcu-flavor-qsbr
+ $(MAKE) -f Makefile.rcu-flavor-qsbr clean
--- /dev/null
+# Copyright (C) 2013 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
+#
+# THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED
+# OR IMPLIED. ANY USE IS AT YOUR OWN RISK.
+#
+# Permission is hereby granted to use or copy this program for any
+# purpose, provided the above notices are retained on all copies.
+# Permission to modify the code and to distribute modified code is
+# granted, provided the above notices are retained, and a notice that
+# the code was modified is included with the above copyright notice.
+#
+# This makefile is purposefully kept simple to support GNU and BSD make.
+
+EXAMPLE_NAME = rcu-flavor-qsbr
+
+SOURCES = $(EXAMPLE_NAME).c
+OBJECTS = $(EXAMPLE_NAME).o
+BINARY = $(EXAMPLE_NAME)
+LIBS = -lurcu-qsbr
+
+include ../Makefile.examples.template
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#define _LGPL_SOURCE
-#include <urcu-qsbr.h>
-#include <urcu/rculist.h>
-#include <urcu/compiler.h>
-
#include <stdlib.h>
#include <stdio.h>
#include <stdint.h>
#include <inttypes.h>
+#include <urcu-qsbr.h> /* QSBR RCU flavor */
+#include <urcu/rculist.h> /* List example */
+#include <urcu/compiler.h> /* For CAA_ARRAY_SIZE */
+
/*
* This is a mock-up example where updates and RCU traversals are
* performed by the same thread to keep things simple on purpose.
/*
* For QSBR flavor, we need to explicitly announce quiescent
- * states.
+ * states. Here is how it is done. This should be performed by
+ * every online registered RCU threads in the program
+ * periodically.
*/
rcu_quiescent_state();
/*
* Waiting for previously called call_rcu handlers to complete
- * before program exits is a good practice.
+ * before program exits, or in library destructors, is a good
+ * practice.
*/
rcu_barrier();