mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-09 07:30:53 +00:00
Merge pull request #8876 from idryzhov/remove-pure
lib: remove pure attribute from functions that modify memory
This commit is contained in:
commit
ca4849b374
@ -123,15 +123,6 @@ extern "C" {
|
|||||||
#define assume(x)
|
#define assume(x)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* pure = function does not modify memory & return value is the same if
|
|
||||||
* memory hasn't changed (=> allows compiler to optimize)
|
|
||||||
*
|
|
||||||
* Mostly autodetected by the compiler if function body is available (i.e.
|
|
||||||
* static inline functions in headers). Since that implies it should only be
|
|
||||||
* used in headers for non-inline functions, the "extern" is included here.
|
|
||||||
*/
|
|
||||||
#define ext_pure extern __attribute__((pure))
|
|
||||||
|
|
||||||
/* for helper functions defined inside macros */
|
/* for helper functions defined inside macros */
|
||||||
#define macro_inline static inline __attribute__((unused))
|
#define macro_inline static inline __attribute__((unused))
|
||||||
#define macro_pure static inline __attribute__((unused, pure))
|
#define macro_pure static inline __attribute__((unused, pure))
|
||||||
|
26
lib/table.h
26
lib/table.h
@ -197,29 +197,25 @@ static inline void route_table_set_info(struct route_table *table, void *d)
|
|||||||
table->info = d;
|
table->info = d;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ext_pure => extern __attribute__((pure))
|
|
||||||
* does not modify memory (but depends on mem), allows compiler to optimize
|
|
||||||
*/
|
|
||||||
|
|
||||||
extern void route_table_finish(struct route_table *table);
|
extern void route_table_finish(struct route_table *table);
|
||||||
ext_pure struct route_node *route_top(struct route_table *table);
|
extern struct route_node *route_top(struct route_table *table);
|
||||||
ext_pure struct route_node *route_next(struct route_node *node);
|
extern struct route_node *route_next(struct route_node *node);
|
||||||
ext_pure struct route_node *route_next_until(struct route_node *node,
|
extern struct route_node *route_next_until(struct route_node *node,
|
||||||
const struct route_node *limit);
|
const struct route_node *limit);
|
||||||
extern struct route_node *route_node_get(struct route_table *table,
|
extern struct route_node *route_node_get(struct route_table *table,
|
||||||
union prefixconstptr pu);
|
union prefixconstptr pu);
|
||||||
ext_pure struct route_node *route_node_lookup(struct route_table *table,
|
extern struct route_node *route_node_lookup(struct route_table *table,
|
||||||
union prefixconstptr pu);
|
union prefixconstptr pu);
|
||||||
ext_pure struct route_node *route_node_lookup_maynull(struct route_table *table,
|
extern struct route_node *route_node_lookup_maynull(struct route_table *table,
|
||||||
union prefixconstptr pu);
|
union prefixconstptr pu);
|
||||||
ext_pure struct route_node *route_node_match(struct route_table *table,
|
extern struct route_node *route_node_match(struct route_table *table,
|
||||||
union prefixconstptr pu);
|
union prefixconstptr pu);
|
||||||
ext_pure struct route_node *route_node_match_ipv4(struct route_table *table,
|
extern struct route_node *route_node_match_ipv4(struct route_table *table,
|
||||||
const struct in_addr *addr);
|
const struct in_addr *addr);
|
||||||
ext_pure struct route_node *route_node_match_ipv6(struct route_table *table,
|
extern struct route_node *route_node_match_ipv6(struct route_table *table,
|
||||||
const struct in6_addr *addr);
|
const struct in6_addr *addr);
|
||||||
|
|
||||||
ext_pure unsigned long route_table_count(struct route_table *table);
|
extern unsigned long route_table_count(struct route_table *table);
|
||||||
|
|
||||||
extern struct route_node *route_node_create(route_table_delegate_t *delegate,
|
extern struct route_node *route_node_create(route_table_delegate_t *delegate,
|
||||||
struct route_table *table);
|
struct route_table *table);
|
||||||
@ -228,9 +224,9 @@ extern void route_node_destroy(route_table_delegate_t *delegate,
|
|||||||
struct route_table *table,
|
struct route_table *table,
|
||||||
struct route_node *node);
|
struct route_node *node);
|
||||||
|
|
||||||
ext_pure struct route_node *route_table_get_next(struct route_table *table,
|
extern struct route_node *route_table_get_next(struct route_table *table,
|
||||||
union prefixconstptr pu);
|
union prefixconstptr pu);
|
||||||
ext_pure int route_table_prefix_iter_cmp(const struct prefix *p1,
|
extern int route_table_prefix_iter_cmp(const struct prefix *p1,
|
||||||
const struct prefix *p2);
|
const struct prefix *p2);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user