[lxc-devel] [lxc/master] compiler: add __hot attribute

brauner on Github lxc-bot at linuxcontainers.org
Wed Sep 26 12:54:29 UTC 2018


A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 439 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20180926/0d3a44d5/attachment.bin>
-------------- next part --------------
From afeec9b7397f862b535846f03be535677c5ce19c Mon Sep 17 00:00:00 2001
From: Christian Brauner <christian.brauner at ubuntu.com>
Date: Wed, 26 Sep 2018 14:52:27 +0200
Subject: [PATCH] compiler: add __hot attribute

This instructs the compiler to better optimize the config parsing code.

Signed-off-by: Christian Brauner <christian.brauner at ubuntu.com>
---
 src/lxc/compiler.h |  4 ++++
 src/lxc/confile.c  | 13 +++++++------
 src/lxc/parse.h    | 10 ++++++----
 3 files changed, 17 insertions(+), 10 deletions(-)

diff --git a/src/lxc/compiler.h b/src/lxc/compiler.h
index 76a7b733d..b6fbbc0e0 100644
--- a/src/lxc/compiler.h
+++ b/src/lxc/compiler.h
@@ -46,6 +46,10 @@
 #endif
 #endif
 
+#ifndef __hot
+#	define __hot __attribute__((hot))
+#endif
+
 #define __cgfsng_ops
 
 #endif /* __LXC_COMPILER_H */
diff --git a/src/lxc/confile.c b/src/lxc/confile.c
index c55ea7872..6312fdf90 100644
--- a/src/lxc/confile.c
+++ b/src/lxc/confile.c
@@ -70,12 +70,13 @@
 
 lxc_log_define(confile, lxc);
 
-#define lxc_config_define(name)                                                \
-	static int set_config_##name(const char *, const char *,               \
-				     struct lxc_conf *, void *);               \
-	static int get_config_##name(const char *, char *, int,                \
-				     struct lxc_conf *, void *);               \
-	static int clr_config_##name(const char *, struct lxc_conf *, void *);
+#define lxc_config_define(name)                                             \
+	__hot static int set_config_##name(const char *, const char *,      \
+					   struct lxc_conf *, void *);      \
+	__hot static int get_config_##name(const char *, char *, int,       \
+					   struct lxc_conf *, void *);      \
+	__hot static int clr_config_##name(const char *, struct lxc_conf *, \
+					   void *);
 
 lxc_config_define(autodev);
 lxc_config_define(apparmor_allow_incomplete);
diff --git a/src/lxc/parse.h b/src/lxc/parse.h
index 913472740..bea45ef12 100644
--- a/src/lxc/parse.h
+++ b/src/lxc/parse.h
@@ -26,16 +26,18 @@
 #include <stdio.h>
 #include <sys/types.h>
 
+#include "compiler.h"
+
 typedef int (*lxc_dir_cb)(const char *name, const char *directory,
 			  const char *file, void *data);
 
 typedef int (*lxc_file_cb)(char *buffer, void *data);
 
-extern int lxc_file_for_each_line(const char *file, lxc_file_cb callback,
-				  void* data);
+__hot extern int lxc_file_for_each_line(const char *file, lxc_file_cb callback,
+					void *data);
 
-extern int lxc_file_for_each_line_mmap(const char *file, lxc_file_cb callback,
-				       void *data);
+__hot extern int lxc_file_for_each_line_mmap(const char *file,
+					     lxc_file_cb callback, void *data);
 
 /* mmap() wrapper. lxc_strmmap() will take care to \0-terminate files so that
  * normal string-handling functions can be used on the buffer. */


More information about the lxc-devel mailing list