Browse Source

use some gcc attributes

Samuel Thibault 9 years ago
parent
commit
d68f1573fd

+ 1 - 1
include/starpu_bitmap.h

@@ -23,7 +23,7 @@ extern "C"
 {
 #endif
 
-struct starpu_bitmap *starpu_bitmap_create(void);
+struct starpu_bitmap *starpu_bitmap_create(void) STARPU_ATTRIBUTE_MALLOC;
 void starpu_bitmap_destroy(struct starpu_bitmap *b);
 
 void starpu_bitmap_set(struct starpu_bitmap *b, int e);

+ 1 - 1
include/starpu_data.h

@@ -84,7 +84,7 @@ void starpu_data_release(starpu_data_handle_t handle);
 void starpu_data_release_on_node(starpu_data_handle_t handle, int node);
 
 typedef struct starpu_arbiter *starpu_arbiter_t;
-starpu_arbiter_t starpu_arbiter_create(void);
+starpu_arbiter_t starpu_arbiter_create(void) STARPU_ATTRIBUTE_MALLOC;
 void starpu_data_assign_arbiter(starpu_data_handle_t handle, starpu_arbiter_t arbiter);
 void starpu_arbiter_destroy(starpu_arbiter_t arbiter);
 

+ 15 - 15
include/starpu_sched_component.h

@@ -84,7 +84,7 @@ struct starpu_sched_tree
 	starpu_pthread_mutex_t lock;
 };
 
-struct starpu_sched_tree *starpu_sched_tree_create(unsigned sched_ctx_id);
+struct starpu_sched_tree *starpu_sched_tree_create(unsigned sched_ctx_id) STARPU_ATTRIBUTE_MALLOC;
 void starpu_sched_tree_destroy(struct starpu_sched_tree *tree);
 struct starpu_sched_tree *starpu_sched_tree_get(unsigned sched_ctx_id);
 void starpu_sched_tree_update_workers(struct starpu_sched_tree *t);
@@ -96,7 +96,7 @@ struct starpu_task *starpu_sched_component_pull_task(struct starpu_sched_compone
 void starpu_sched_tree_add_workers(unsigned sched_ctx_id, int *workerids, unsigned nworkers);
 void starpu_sched_tree_remove_workers(unsigned sched_ctx_id, int *workerids, unsigned nworkers);
 
-struct starpu_sched_component *starpu_sched_component_create(struct starpu_sched_tree *tree, const char *name);
+struct starpu_sched_component *starpu_sched_component_create(struct starpu_sched_tree *tree, const char *name) STARPU_ATTRIBUTE_MALLOC;
 void starpu_sched_component_add_child(struct starpu_sched_component* component, struct starpu_sched_component * child);
 void starpu_sched_component_destroy(struct starpu_sched_component *component);
 void starpu_sched_component_destroy_rec(struct starpu_sched_component *component);
@@ -121,7 +121,7 @@ struct starpu_sched_component_fifo_data
 	double exp_len_threshold;
 };
 
-struct starpu_sched_component *starpu_sched_component_fifo_create(struct starpu_sched_tree *tree, struct starpu_sched_component_fifo_data *fifo_data);
+struct starpu_sched_component *starpu_sched_component_fifo_create(struct starpu_sched_tree *tree, struct starpu_sched_component_fifo_data *fifo_data) STARPU_ATTRIBUTE_MALLOC;
 int starpu_sched_component_is_fifo(struct starpu_sched_component *component);
 
 struct starpu_sched_component_prio_data
@@ -129,20 +129,20 @@ struct starpu_sched_component_prio_data
 	unsigned ntasks_threshold;
 	double exp_len_threshold;
 };
-struct starpu_sched_component *starpu_sched_component_prio_create(struct starpu_sched_tree *tree, struct starpu_sched_component_prio_data *prio_data);
+struct starpu_sched_component *starpu_sched_component_prio_create(struct starpu_sched_tree *tree, struct starpu_sched_component_prio_data *prio_data) STARPU_ATTRIBUTE_MALLOC;
 int starpu_sched_component_is_prio(struct starpu_sched_component *component);
 
-struct starpu_sched_component *starpu_sched_component_work_stealing_create(struct starpu_sched_tree *tree, void *arg STARPU_ATTRIBUTE_UNUSED);
+struct starpu_sched_component *starpu_sched_component_work_stealing_create(struct starpu_sched_tree *tree, void *arg STARPU_ATTRIBUTE_UNUSED) STARPU_ATTRIBUTE_MALLOC;
 int starpu_sched_component_is_work_stealing(struct starpu_sched_component *component);
 int starpu_sched_tree_work_stealing_push_task(struct starpu_task *task);
 
-struct starpu_sched_component *starpu_sched_component_random_create(struct starpu_sched_tree *tree, void *arg STARPU_ATTRIBUTE_UNUSED);
+struct starpu_sched_component *starpu_sched_component_random_create(struct starpu_sched_tree *tree, void *arg STARPU_ATTRIBUTE_UNUSED) STARPU_ATTRIBUTE_MALLOC;
 int starpu_sched_component_is_random(struct starpu_sched_component *);
 
-struct starpu_sched_component *starpu_sched_component_eager_create(struct starpu_sched_tree *tree, void *arg STARPU_ATTRIBUTE_UNUSED);
+struct starpu_sched_component *starpu_sched_component_eager_create(struct starpu_sched_tree *tree, void *arg STARPU_ATTRIBUTE_UNUSED) STARPU_ATTRIBUTE_MALLOC;
 int starpu_sched_component_is_eager(struct starpu_sched_component *);
 
-struct starpu_sched_component *starpu_sched_component_eager_calibration_create(struct starpu_sched_tree *tree, void *arg STARPU_ATTRIBUTE_UNUSED);
+struct starpu_sched_component *starpu_sched_component_eager_calibration_create(struct starpu_sched_tree *tree, void *arg STARPU_ATTRIBUTE_UNUSED) STARPU_ATTRIBUTE_MALLOC;
 int starpu_sched_component_is_eager_calibration(struct starpu_sched_component *);
 
 struct starpu_sched_component_mct_data
@@ -152,13 +152,13 @@ struct starpu_sched_component_mct_data
 	double _gamma;
 	double idle_power;
 };
-struct starpu_sched_component *starpu_sched_component_mct_create(struct starpu_sched_tree *tree, struct starpu_sched_component_mct_data *mct_data);
+struct starpu_sched_component *starpu_sched_component_mct_create(struct starpu_sched_tree *tree, struct starpu_sched_component_mct_data *mct_data) STARPU_ATTRIBUTE_MALLOC;
 int starpu_sched_component_is_mct(struct starpu_sched_component *component);
 
-struct starpu_sched_component *starpu_sched_component_heft_create(struct starpu_sched_tree *tree, struct starpu_sched_component_mct_data *mct_data);
+struct starpu_sched_component *starpu_sched_component_heft_create(struct starpu_sched_tree *tree, struct starpu_sched_component_mct_data *mct_data) STARPU_ATTRIBUTE_MALLOC;
 int starpu_sched_component_is_heft(struct starpu_sched_component *component);
 
-struct starpu_sched_component *starpu_sched_component_best_implementation_create(struct starpu_sched_tree *tree, void *arg STARPU_ATTRIBUTE_UNUSED);
+struct starpu_sched_component *starpu_sched_component_best_implementation_create(struct starpu_sched_tree *tree, void *arg STARPU_ATTRIBUTE_UNUSED) STARPU_ATTRIBUTE_MALLOC;
 
 struct starpu_sched_component_perfmodel_select_data
 {
@@ -166,15 +166,15 @@ struct starpu_sched_component_perfmodel_select_data
 	struct starpu_sched_component *no_perfmodel_component;
 	struct starpu_sched_component *perfmodel_component;
 };
-struct starpu_sched_component *starpu_sched_component_perfmodel_select_create(struct starpu_sched_tree *tree, struct starpu_sched_component_perfmodel_select_data *perfmodel_select_data);
+struct starpu_sched_component *starpu_sched_component_perfmodel_select_create(struct starpu_sched_tree *tree, struct starpu_sched_component_perfmodel_select_data *perfmodel_select_data) STARPU_ATTRIBUTE_MALLOC;
 int starpu_sched_component_is_perfmodel_select(struct starpu_sched_component *component);
 
 struct starpu_sched_component_composed_recipe;
-struct starpu_sched_component_composed_recipe *starpu_sched_component_composed_recipe_create(void);
-struct starpu_sched_component_composed_recipe *starpu_sched_component_composed_recipe_create_singleton(struct starpu_sched_component *(*create_component)(struct starpu_sched_tree *tree, void *arg), void *arg);
+struct starpu_sched_component_composed_recipe *starpu_sched_component_composed_recipe_create(void) STARPU_ATTRIBUTE_MALLOC;
+struct starpu_sched_component_composed_recipe *starpu_sched_component_composed_recipe_create_singleton(struct starpu_sched_component *(*create_component)(struct starpu_sched_tree *tree, void *arg), void *arg) STARPU_ATTRIBUTE_MALLOC;
 void starpu_sched_component_composed_recipe_add(struct starpu_sched_component_composed_recipe *recipe, struct starpu_sched_component *(*create_component)(struct starpu_sched_tree *tree, void *arg), void *arg);
 void starpu_sched_component_composed_recipe_destroy(struct starpu_sched_component_composed_recipe *);
-struct starpu_sched_component *starpu_sched_component_composed_component_create(struct starpu_sched_tree *tree, struct starpu_sched_component_composed_recipe *recipe);
+struct starpu_sched_component *starpu_sched_component_composed_component_create(struct starpu_sched_tree *tree, struct starpu_sched_component_composed_recipe *recipe) STARPU_ATTRIBUTE_MALLOC;
 
 #ifdef STARPU_HAVE_HWLOC
 struct starpu_sched_component_specs

+ 1 - 1
include/starpu_sched_ctx.h

@@ -102,7 +102,7 @@ int starpu_sched_ctx_max_priority_is_set(unsigned sched_ctx_id);
 
 #define STARPU_DEFAULT_PRIO	0
 
-struct starpu_worker_collection *starpu_sched_ctx_create_worker_collection(unsigned sched_ctx_id, enum starpu_worker_collection_type type);
+struct starpu_worker_collection *starpu_sched_ctx_create_worker_collection(unsigned sched_ctx_id, enum starpu_worker_collection_type type) STARPU_ATTRIBUTE_MALLOC;
 
 void starpu_sched_ctx_delete_worker_collection(unsigned sched_ctx_id);
 

+ 2 - 2
include/starpu_stdlib.h

@@ -36,10 +36,10 @@ extern "C"
 
 void starpu_malloc_set_align(size_t align);
 
-int starpu_malloc(void **A, size_t dim);
+int starpu_malloc(void **A, size_t dim) STARPU_ATTRIBUTE_ALLOC_SIZE(2);
 int starpu_free(void *A);
 
-int starpu_malloc_flags(void **A, size_t dim, int flags);
+int starpu_malloc_flags(void **A, size_t dim, int flags) STARPU_ATTRIBUTE_ALLOC_SIZE(2);
 int starpu_free_flags(void *A, size_t dim, int flags);
 
 int starpu_memory_pin(void *addr, size_t size);

+ 1 - 1
include/starpu_task.h

@@ -283,7 +283,7 @@ struct starpu_task *starpu_tag_get_task(starpu_tag_t id);
 void starpu_task_init(struct starpu_task *task);
 void starpu_task_clean(struct starpu_task *task);
 
-struct starpu_task *starpu_task_create(void);
+struct starpu_task *starpu_task_create(void) STARPU_ATTRIBUTE_MALLOC;
 
 void starpu_task_destroy(struct starpu_task *task);
 int starpu_task_submit(struct starpu_task *task) STARPU_WARN_UNUSED_RESULT;

+ 10 - 0
include/starpu_util.h

@@ -51,6 +51,7 @@ extern "C"
 #  define STARPU_ATTRIBUTE_WARN_UNUSED_RESULT      __attribute__((warn_unused_result))
 #  define STARPU_ATTRIBUTE_PURE                    __attribute__((pure))
 #  define STARPU_ATTRIBUTE_ALIGNED(size)           __attribute__((aligned(size)))
+#  define STARPU_ATTRIBUTE_FORMAT(type, string, first)                  __attribute__((format(type, string, first)))
 #else
 #  define STARPU_UNLIKELY(expr)          (expr)
 #  define STARPU_LIKELY(expr)            (expr)
@@ -61,6 +62,7 @@ extern "C"
 #  define STARPU_ATTRIBUTE_WARN_UNUSED_RESULT
 #  define STARPU_ATTRIBUTE_PURE
 #  define STARPU_ATTRIBUTE_ALIGNED(size)
+#  define STARPU_ATTRIBUTE_FORMAT(type, string, first)
 #endif
 
 /* Note that if we're compiling C++, then just use the "inline"
@@ -73,6 +75,14 @@ extern "C"
 #  define STARPU_INLINE __inline__
 #endif
 
+#if STARPU_GNUC_PREREQ(4, 3)
+#  define STARPU_ATTRIBUTE_CALLOC_SIZE(num,size)   __attribute__((alloc_size(num,size)))
+#  define STARPU_ATTRIBUTE_ALLOC_SIZE(size)        __attribute__((alloc_size(size)))
+#else
+#  define STARPU_ATTRIBUTE_CALLOC_SIZE(num,size)
+#  define STARPU_ATTRIBUTE_ALLOC_SIZE(size)
+#endif
+
 #if STARPU_GNUC_PREREQ(3, 1) && !defined(BUILDING_STARPU) && !defined(STARPU_USE_DEPRECATED_API) && !defined(STARPU_USE_DEPRECATED_ONE_ZERO_API)
 #define STARPU_DEPRECATED  __attribute__((__deprecated__))
 #else

+ 2 - 2
mpi/src/starpu_mpi_early_data.h

@@ -1,6 +1,6 @@
 /* StarPU --- Runtime system for heterogeneous multicore architectures.
  *
- * Copyright (C) 2009, 2010-2014  Université de Bordeaux
+ * Copyright (C) 2009, 2010-2014, 2016  Université de Bordeaux
  * Copyright (C) 2010, 2011, 2012, 2013, 2014, 2015  CNRS
  *
  * StarPU is free software; you can redistribute it and/or modify
@@ -44,7 +44,7 @@ void _starpu_mpi_early_data_init(void);
 void _starpu_mpi_early_data_check_termination(void);
 void _starpu_mpi_early_data_free(void);
 
-struct _starpu_mpi_early_data_handle *_starpu_mpi_early_data_create(struct _starpu_mpi_envelope *envelope, int source, MPI_Comm comm);
+struct _starpu_mpi_early_data_handle *_starpu_mpi_early_data_create(struct _starpu_mpi_envelope *envelope, int source, MPI_Comm comm) STARPU_ATTRIBUTE_MALLOC;
 struct _starpu_mpi_early_data_handle *_starpu_mpi_early_data_find(struct _starpu_mpi_node_tag *node_tag);
 void _starpu_mpi_early_data_add(struct _starpu_mpi_early_data_handle *early_data_handle);
 void _starpu_mpi_early_data_delete(struct _starpu_mpi_early_data_handle *early_data_handle);

+ 2 - 2
socl/src/task.h

@@ -1,6 +1,6 @@
 /* StarPU --- Runtime system for heterogeneous multicore architectures.
  *
- * Copyright (C) 2010,2011 University of Bordeaux
+ * Copyright (C) 2010,2011, 2016 University of Bordeaux
  *
  * StarPU is free software; you can redistribute it and/or modify
  * it under the terms of the GNU Lesser General Public License as published by
@@ -19,7 +19,7 @@
 
 #include "socl.h"
 
-starpu_task task_create();
+starpu_task task_create() STARPU_ATTRIBUTE_MALLOC;
 void task_dependency_add(starpu_task task, cl_uint num_events, cl_event *events);
 void command_completed(cl_command cmd);
 

+ 2 - 2
src/core/debug.h

@@ -1,6 +1,6 @@
 /* StarPU --- Runtime system for heterogeneous multicore architectures.
  *
- * Copyright (C) 2009-2013  Université de Bordeaux
+ * Copyright (C) 2009-2013, 2016  Université de Bordeaux
  * Copyright (C) 2010, 2011  CNRS
  *
  * StarPU is free software; you can redistribute it and/or modify
@@ -36,7 +36,7 @@ void _starpu_open_debug_logfile(void);
 void _starpu_close_debug_logfile(void);
 
 /* Write into StarPU's log file */
-void _starpu_print_to_logfile(const char *format, ...);
+void _starpu_print_to_logfile(const char *format, ...) STARPU_ATTRIBUTE_FORMAT(printf, 1, 2);
 
 /* Tell gdb whether FXT is compiled in or not */
 extern int _starpu_use_fxt;

+ 1 - 1
src/core/disk.h

@@ -31,7 +31,7 @@ extern "C"
 #include <datawizard/copy_driver.h>
 
 /* interface to manipulate memory disk */
-void * _starpu_disk_alloc (unsigned node, size_t size);
+void * _starpu_disk_alloc (unsigned node, size_t size) STARPU_ATTRIBUTE_MALLOC;
 
 void _starpu_disk_free (unsigned node, void *obj, size_t size);
 /* src_node is a disk node, dst_node is for the moment the STARPU_MAIN_RAM */

+ 1 - 1
src/core/jobs.h

@@ -289,7 +289,7 @@ void _starpu_job_init(void);
 void _starpu_job_fini(void);
 
 /* Create an internal struct _starpu_job *structure to encapsulate the task. */
-struct _starpu_job* STARPU_ATTRIBUTE_MALLOC _starpu_job_create(struct starpu_task *task);
+struct _starpu_job* _starpu_job_create(struct starpu_task *task) STARPU_ATTRIBUTE_MALLOC;
 
 /* Destroy the data structure associated to the job structure */
 void _starpu_job_destroy(struct _starpu_job *j);

+ 2 - 2
src/core/sched_policy.h

@@ -52,10 +52,10 @@ int _starpu_pop_task_end(struct starpu_task *task);
 void _starpu_wait_on_sched_event(void);
 
 struct starpu_task *_starpu_create_conversion_task(starpu_data_handle_t handle,
-						   unsigned int node);
+						   unsigned int node) STARPU_ATTRIBUTE_MALLOC;
 
 struct starpu_task *_starpu_create_conversion_task_for_arch(starpu_data_handle_t handle,
-						   enum starpu_node_kind node_kind);
+						   enum starpu_node_kind node_kind) STARPU_ATTRIBUTE_MALLOC;
 
 void _starpu_sched_pre_exec_hook(struct starpu_task *task);
 

+ 1 - 1
src/datawizard/data_request.h

@@ -139,7 +139,7 @@ struct _starpu_data_request *_starpu_create_data_request(starpu_data_handle_t ha
 							 unsigned ndeps,
 							 unsigned is_prefetch,
 							 int prio,
-							 unsigned is_write_invalidation);
+							 unsigned is_write_invalidation) STARPU_ATTRIBUTE_MALLOC;
 
 int _starpu_wait_data_request_completion(struct _starpu_data_request *r, unsigned may_alloc);
 

+ 1 - 1
src/drivers/mp_common/mp_common.h

@@ -220,7 +220,7 @@ struct _starpu_mp_node
 	void (*free)(const struct _starpu_mp_node *, void *, int);
 };
 
-struct _starpu_mp_node * _starpu_mp_common_node_create(enum _starpu_mp_node_kind node_kind, int peer_devid);
+struct _starpu_mp_node * _starpu_mp_common_node_create(enum _starpu_mp_node_kind node_kind, int peer_devid) STARPU_ATTRIBUTE_MALLOC;
 
 void _starpu_mp_common_node_destroy(struct _starpu_mp_node *node);
 

+ 1 - 1
src/sched_policies/fifo_queues.h

@@ -44,7 +44,7 @@ struct _starpu_fifo_taskq
 	double *exp_len_per_priority; /* Expected duration of the set of tasks in the queue corresponding to each priority */
 };
 
-struct _starpu_fifo_taskq*_starpu_create_fifo(void);
+struct _starpu_fifo_taskq*_starpu_create_fifo(void) STARPU_ATTRIBUTE_MALLOC;
 void _starpu_destroy_fifo(struct _starpu_fifo_taskq *fifo);
 
 int _starpu_fifo_empty(struct _starpu_fifo_taskq *fifo);