Skip to content

Commit

Permalink
NO-ISSUE: Add Clang Thread Safety Annotations for _CT functions
Browse files Browse the repository at this point in the history
  • Loading branch information
jiridanek committed Jan 5, 2024
1 parent 2469371 commit a57a466
Show file tree
Hide file tree
Showing 43 changed files with 292 additions and 276 deletions.
4 changes: 4 additions & 0 deletions include/qpid/dispatch/internal/thread_annotations.h
Original file line number Diff line number Diff line change
Expand Up @@ -84,3 +84,7 @@
#define TA_RET_CAP(x) THREAD_ANNOTATION(lock_returned(x))
#define TA_SCOPED_CAP THREAD_ANNOTATION(scoped_lockable)
#define TA_NO_THREAD_SAFETY_ANALYSIS THREAD_ANNOTATION(no_thread_safety_analysis)

typedef void const * const core_thread_capability_t TA_CAP("core_thread");

extern core_thread_capability_t core_thread_capability;
9 changes: 5 additions & 4 deletions include/qpid/dispatch/router_core.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,12 +46,13 @@ ENUM_DECLARE(qd_router_mode);
/**
* Allocate and start an instance of the router core module.
*/
qdr_core_t *qdr_core(qd_dispatch_t *qd, qd_router_mode_t mode, const char *area, const char *id);
qdr_core_t *qdr_core(qd_dispatch_t *qd, qd_router_mode_t mode, const char *area, const char *id)
TA_RET_CAP(core_thread_capability);

/**
* Stop and deallocate an instance of the router core.
*/
void qdr_core_free(qdr_core_t *core);
void qdr_core_free(qdr_core_t *core) TA_REQ(core_thread_capability);

/**
******************************************************************************
Expand Down Expand Up @@ -363,8 +364,8 @@ void qdr_manage_update(qdr_core_t *core, void *context, qd_router_entity_type_t

qdr_query_t *qdr_manage_query(qdr_core_t *core, void *context, qd_router_entity_type_t type,
qd_parsed_field_t *attribute_names, qd_composed_field_t *body,
uint64_t in_conn);
void qdr_query_add_attribute_names(qdr_query_t *query);
uint64_t in_conn) TA_REQ(core_thread_capability);
void qdr_query_add_attribute_names(qdr_query_t *query) TA_REQ(core_thread_capability);
void qdr_query_get_first(qdr_query_t *query, int offset);
void qdr_query_get_next(qdr_query_t *query);
void qdr_query_free(qdr_query_t *query);
Expand Down
6 changes: 3 additions & 3 deletions src/adaptors/http_common.h
Original file line number Diff line number Diff line change
Expand Up @@ -97,13 +97,13 @@ QD_EXPORT void qd_dispatch_delete_http_connector(qd_dispatch_t *qd, void *impl);
QD_EXPORT qd_error_t qd_entity_refresh_httpConnector(qd_entity_t* entity, void *impl);

// Management interfaces for retrieval of HttpRequestInfo entities
void qdra_http_request_info_get_first_CT(qdr_core_t *core, qdr_query_t *query, int offset);
void qdra_http_request_info_get_next_CT(qdr_core_t *core, qdr_query_t *query);
void qdra_http_request_info_get_first_CT(qdr_core_t *core, qdr_query_t *query, int offset) TA_REQ(core_thread_capability);
void qdra_http_request_info_get_next_CT(qdr_core_t *core, qdr_query_t *query) TA_REQ(core_thread_capability);
void qdra_http_request_info_get_CT(qdr_core_t *core,
qd_iterator_t *name,
qd_iterator_t *identity,
qdr_query_t *query,
const char *qdr_http_request_info_columns[]);
const char *qdr_http_request_info_columns[]) TA_REQ(core_thread_capability);

#define QDR_HTTP_REQUEST_INFO_COLUMN_COUNT 11
extern const char *qdr_http_request_info_columns[QDR_HTTP_REQUEST_INFO_COLUMN_COUNT + 1];
Expand Down
6 changes: 3 additions & 3 deletions src/adaptors/tcp/tcp_adaptor.h
Original file line number Diff line number Diff line change
Expand Up @@ -96,13 +96,13 @@ struct qd_tcp_connector_t
DEQ_DECLARE(qd_tcp_connector_t, qd_tcp_connector_list_t);
ALLOC_DECLARE(qd_tcp_connector_t);

void qdra_tcp_connection_get_first_CT(qdr_core_t *core, qdr_query_t *query, int offset);
void qdra_tcp_connection_get_next_CT(qdr_core_t *core, qdr_query_t *query);
void qdra_tcp_connection_get_first_CT(qdr_core_t *core, qdr_query_t *query, int offset) TA_REQ(core_thread_capability);
void qdra_tcp_connection_get_next_CT(qdr_core_t *core, qdr_query_t *query) TA_REQ(core_thread_capability);
void qdra_tcp_connection_get_CT(qdr_core_t *core,
qd_iterator_t *name,
qd_iterator_t *identity,
qdr_query_t *query,
const char *qdr_tcp_connection_columns[]);
const char *qdr_tcp_connection_columns[]) TA_REQ(core_thread_capability);

#define QDR_TCP_CONNECTION_COLUMN_COUNT 10
extern const char *qdr_tcp_connection_columns[QDR_TCP_CONNECTION_COLUMN_COUNT + 1];
Expand Down
6 changes: 3 additions & 3 deletions src/router_core/address_watch.c
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,9 @@ ALLOC_DEFINE(qdr_address_watch_t);

static void qdr_watch_invoker(qdr_core_t *core, qdr_general_work_t *work, bool discard);
static void qdr_watch_cancel_invoker(qdr_core_t *core, qdr_general_work_t *work, bool discard);
static void qdr_core_watch_address_CT(qdr_core_t *core, qdr_action_t *action, bool discard);
static void qdr_core_unwatch_address_CT(qdr_core_t *core, qdr_action_t *action, bool discard);
static void qdr_address_watch_free_CT(qdr_core_t *core, qdr_address_watch_t *watch);
static void qdr_core_watch_address_CT(qdr_core_t *core, qdr_action_t *action, bool discard) TA_REQ(core_thread_capability);
static void qdr_core_unwatch_address_CT(qdr_core_t *core, qdr_action_t *action, bool discard) TA_REQ(core_thread_capability);
static void qdr_address_watch_free_CT(qdr_core_t *core, qdr_address_watch_t *watch) TA_REQ(core_thread_capability);

//==================================================================================
// Core Interface Functions
Expand Down
4 changes: 2 additions & 2 deletions src/router_core/address_watch.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@ DEQ_DECLARE(qdr_address_watch_t, qdr_address_watch_list_t);
* @param core Pointer to the router core state
* @param addr Pointer to the address record that was modified
*/
void qdr_trigger_address_watch_CT(qdr_core_t *core, qdr_address_t *addr);
void qdr_trigger_address_watch_CT(qdr_core_t *core, qdr_address_t *addr) TA_REQ(core_thread_capability);

void qdr_address_watch_shutdown(qdr_core_t *core);
void qdr_address_watch_shutdown(qdr_core_t *core) TA_REQ(core_thread_capability);

#endif
18 changes: 9 additions & 9 deletions src/router_core/agent.c
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,10 @@

#include "qpid/dispatch/amqp.h"

static void qdr_manage_read_CT(qdr_core_t *core, qdr_action_t *action, bool discard);
static void qdr_manage_create_CT(qdr_core_t *core, qdr_action_t *action, bool discard);
static void qdr_manage_delete_CT(qdr_core_t *core, qdr_action_t *action, bool discard);
static void qdr_manage_update_CT(qdr_core_t *core, qdr_action_t *action, bool discard);
static void qdr_manage_read_CT(qdr_core_t *core, qdr_action_t *action, bool discard) TA_REQ(core_thread_capability);
static void qdr_manage_create_CT(qdr_core_t *core, qdr_action_t *action, bool discard) TA_REQ(core_thread_capability);
static void qdr_manage_delete_CT(qdr_core_t *core, qdr_action_t *action, bool discard) TA_REQ(core_thread_capability);
static void qdr_manage_update_CT(qdr_core_t *core, qdr_action_t *action, bool discard) TA_REQ(core_thread_capability);

ALLOC_DECLARE(qdr_query_t);
ALLOC_DEFINE(qdr_query_t);
Expand Down Expand Up @@ -110,10 +110,10 @@ qdr_query_t *qdr_query(qdr_core_t *core,
return query;
}

static void qdrh_query_get_first_CT(qdr_core_t *core, qdr_action_t *action, bool discard);
static void qdrh_query_get_next_CT(qdr_core_t *core, qdr_action_t *action, bool discard);
static void qdr_agent_emit_columns(qdr_query_t *query, const char *qdr_columns[], int column_count);
static void qdr_agent_set_columns(qdr_query_t *query, qd_parsed_field_t *attribute_names, const char *qdr_columns[], int column_count);
static void qdrh_query_get_first_CT(qdr_core_t *core, qdr_action_t *action, bool discard) TA_REQ(core_thread_capability);
static void qdrh_query_get_next_CT(qdr_core_t *core, qdr_action_t *action, bool discard) TA_REQ(core_thread_capability);
static void qdr_agent_emit_columns(qdr_query_t *query, const char *qdr_columns[], int column_count) TA_REQ(core_thread_capability);
static void qdr_agent_set_columns(qdr_query_t *query, qd_parsed_field_t *attribute_names, const char *qdr_columns[], int column_count) TA_REQ(core_thread_capability);

//==================================================================================
// Interface Functions
Expand Down Expand Up @@ -387,7 +387,7 @@ void qdr_manage_handler(qdr_core_t *core, qdr_manage_response_t response_handler
// In-Thread Functions
//==================================================================================

static void qdr_agent_forbidden(qdr_core_t *core, qdr_query_t *query, bool op_query)
static void qdr_agent_forbidden(qdr_core_t *core, qdr_query_t *query, bool op_query) TA_REQ(core_thread_capability)
{
query->status = QD_AMQP_FORBIDDEN;
if (query->body && !op_query)
Expand Down
7 changes: 3 additions & 4 deletions src/router_core/agent_address.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,14 @@

#include "router_core_private.h"

void qdra_address_get_first_CT(qdr_core_t *core, qdr_query_t *query, int offset);
void qdra_address_get_next_CT(qdr_core_t *core, qdr_query_t *query);
void qdra_address_get_first_CT(qdr_core_t *core, qdr_query_t *query, int offset) TA_REQ(core_thread_capability);
void qdra_address_get_next_CT(qdr_core_t *core, qdr_query_t *query) TA_REQ(core_thread_capability);

void qdra_address_get_CT(qdr_core_t *core,
qd_iterator_t *name,
qd_iterator_t *identity,
qdr_query_t *query,
const char *qdr_address_columns[]);

const char *qdr_address_columns[]) TA_REQ(core_thread_capability);

#define QDR_ADDRESS_COLUMN_COUNT 21

Expand Down
14 changes: 7 additions & 7 deletions src/router_core/agent_config_address.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,20 +21,20 @@

#include "router_core_private.h"

void qdra_config_address_get_first_CT(qdr_core_t *core, qdr_query_t *query, int offset);
void qdra_config_address_get_next_CT(qdr_core_t *core, qdr_query_t *query);
void qdra_config_address_create_CT(qdr_core_t *core, qd_iterator_t *name, qdr_query_t *query, qd_parsed_field_t *in_body);
void qdra_config_address_update_CT(qdr_core_t *core, qdr_query_t *query, qd_parsed_field_t *in_body);
void qdra_config_address_get_first_CT(qdr_core_t *core, qdr_query_t *query, int offset) TA_REQ(core_thread_capability);
void qdra_config_address_get_next_CT(qdr_core_t *core, qdr_query_t *query) TA_REQ(core_thread_capability);
void qdra_config_address_create_CT(qdr_core_t *core, qd_iterator_t *name, qdr_query_t *query, qd_parsed_field_t *in_body) TA_REQ(core_thread_capability);
void qdra_config_address_update_CT(qdr_core_t *core, qdr_query_t *query, qd_parsed_field_t *in_body) TA_REQ(core_thread_capability);
void qdra_config_address_delete_CT(qdr_core_t *core, qdr_query_t *query, qd_iterator_t *name,
qd_iterator_t *identity);
qd_iterator_t *identity) TA_REQ(core_thread_capability);
void qdra_config_address_get_CT(qdr_core_t *core,
qd_iterator_t *name,
qd_iterator_t *identity,
qdr_query_t *query,
const char *qdr_config_address_columns[]);
const char *qdr_config_address_columns[]) TA_REQ(core_thread_capability);
char *qdra_config_address_validate_pattern_CT(qd_parsed_field_t *pattern_field,
bool is_prefix,
const char **error);
const char **error) TA_REQ(core_thread_capability);
#define QDR_CONFIG_ADDRESS_COLUMN_COUNT 7

extern const char *qdr_config_address_columns[QDR_CONFIG_ADDRESS_COLUMN_COUNT + 1];
Expand Down
2 changes: 1 addition & 1 deletion src/router_core/agent_config_auto_link.c
Original file line number Diff line number Diff line change
Expand Up @@ -195,7 +195,7 @@ static void qdr_manage_advance_config_auto_link_CT(qdr_query_t *query, qdr_auto_
}


void qdra_config_auto_link_get_first_CT(qdr_core_t *core, qdr_query_t *query, int offset)
void qdra_config_auto_link_get_first_CT(qdr_core_t *core, qdr_query_t *query, int offset) TA_REQ(core_thread_capability)
{
//
// Queries that get this far will always succeed.
Expand Down
12 changes: 6 additions & 6 deletions src/router_core/agent_config_auto_link.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,17 +21,17 @@

#include "router_core_private.h"

void qdra_config_auto_link_get_first_CT(qdr_core_t *core, qdr_query_t *query, int offset);
void qdra_config_auto_link_get_next_CT(qdr_core_t *core, qdr_query_t *query);
void qdra_config_auto_link_create_CT(qdr_core_t *core, qd_iterator_t *name, qdr_query_t *query, qd_parsed_field_t *in_body);
void qdra_config_auto_link_update_CT(qdr_core_t *core, qdr_query_t *query, qd_parsed_field_t *in_body);
void qdra_config_auto_link_get_first_CT(qdr_core_t *core, qdr_query_t *query, int offset) TA_REQ(core_thread_capability);
void qdra_config_auto_link_get_next_CT(qdr_core_t *core, qdr_query_t *query) TA_REQ(core_thread_capability);
void qdra_config_auto_link_create_CT(qdr_core_t *core, qd_iterator_t *name, qdr_query_t *query, qd_parsed_field_t *in_body) TA_REQ(core_thread_capability);
void qdra_config_auto_link_update_CT(qdr_core_t *core, qdr_query_t *query, qd_parsed_field_t *in_body) TA_REQ(core_thread_capability);
void qdra_config_auto_link_delete_CT(qdr_core_t *core, qdr_query_t *query, qd_iterator_t *name,
qd_iterator_t *identity);
qd_iterator_t *identity) TA_REQ(core_thread_capability);
void qdra_config_auto_link_get_CT(qdr_core_t *core,
qd_iterator_t *name,
qd_iterator_t *identity,
qdr_query_t *query,
const char *qdr_config_auto_link_columns[]);
const char *qdr_config_auto_link_columns[]) TA_REQ(core_thread_capability);
#define QDR_CONFIG_AUTO_LINK_COLUMN_COUNT 14

extern const char *qdr_config_auto_link_columns[QDR_CONFIG_AUTO_LINK_COLUMN_COUNT + 1];
Expand Down
17 changes: 10 additions & 7 deletions src/router_core/agent_connection.c
Original file line number Diff line number Diff line change
Expand Up @@ -120,10 +120,10 @@ static void qd_get_next_pn_data(pn_data_t **data, const char **d, int *d1)
break;
}
}
}
}


static void qdr_connection_insert_column_CT(qdr_core_t *core, qdr_connection_t *conn, int col, qd_composed_field_t *body, bool as_map)
static void qdr_connection_insert_column_CT(qdr_core_t *core, qdr_connection_t *conn, int col, qd_composed_field_t *body, bool as_map) TA_REQ(core_thread_capability)
{
char id_str[100];
const char *text = 0;
Expand Down Expand Up @@ -174,7 +174,7 @@ static void qdr_connection_insert_column_CT(qdr_core_t *core, qdr_connection_t *
break;

case QDR_CONNECTION_SASL_MECHANISMS:
if (conn->connection_info->sasl_mechanisms)
if (conn->connection_info->sasl_mechanisms)
qd_compose_insert_string(body, conn->connection_info->sasl_mechanisms);
else
qd_compose_insert_null(body);
Expand Down Expand Up @@ -319,7 +319,7 @@ static void qdr_connection_insert_column_CT(qdr_core_t *core, qdr_connection_t *
}


static void qdr_agent_write_connection_CT(qdr_core_t *core, qdr_query_t *query, qdr_connection_t *conn)
static void qdr_agent_write_connection_CT(qdr_core_t *core, qdr_query_t *query, qdr_connection_t *conn) TA_REQ(core_thread_capability)
{
qd_composed_field_t *body = query->body;

Expand Down Expand Up @@ -427,7 +427,7 @@ void qdra_connection_get_next_CT(qdr_core_t *core, qdr_query_t *query)
static void qdr_manage_write_connection_map_CT(qdr_core_t *core,
qdr_connection_t *conn,
qd_composed_field_t *body,
const char *qdr_connection_columns[])
const char *qdr_connection_columns[]) TA_REQ(core_thread_capability)
{
qd_compose_start_map(body);

Expand All @@ -451,7 +451,7 @@ static qdr_connection_t *_find_conn_CT(qdr_core_t *core, uint64_t conn_id)
}


static qdr_connection_t *qdr_connection_find_by_identity_CT(qdr_core_t *core, qd_iterator_t *identity)
static qdr_connection_t *qdr_connection_find_by_identity_CT(qdr_core_t *core, qd_iterator_t *identity) TA_REQ(core_thread_capability)
{
if (!identity)
return 0;
Expand Down Expand Up @@ -518,7 +518,10 @@ static void qdra_connection_set_bad_request(qdr_query_t *query)
}


static void qdra_connection_update_set_status(qdr_core_t *core, qdr_query_t *query, qdr_connection_t *conn, qd_parsed_field_t *admin_state)
static void qdra_connection_update_set_status(qdr_core_t *core,
qdr_query_t *query,
qdr_connection_t *conn,
qd_parsed_field_t *admin_state) TA_REQ(core_thread_capability)
{
if (conn) {
qd_iterator_t *admin_status_iter = qd_parse_raw(admin_state);
Expand Down
8 changes: 4 additions & 4 deletions src/router_core/agent_connection.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,19 +21,19 @@

#include "router_core_private.h"

void qdra_connection_get_first_CT(qdr_core_t *core, qdr_query_t *query, int offset);
void qdra_connection_get_next_CT(qdr_core_t *core, qdr_query_t *query);
void qdra_connection_get_first_CT(qdr_core_t *core, qdr_query_t *query, int offset) TA_REQ(core_thread_capability);
void qdra_connection_get_next_CT(qdr_core_t *core, qdr_query_t *query) TA_REQ(core_thread_capability);
void qdra_connection_get_CT(qdr_core_t *core,
qd_iterator_t *name,
qd_iterator_t *identity,
qdr_query_t *query,
const char *qdr_connection_columns[]);
const char *qdr_connection_columns[]) TA_REQ(core_thread_capability);

void qdra_connection_update_CT(qdr_core_t *core,
qd_iterator_t *name,
qd_iterator_t *identity,
qdr_query_t *query,
qd_parsed_field_t *in_body);
qd_parsed_field_t *in_body) TA_REQ(core_thread_capability);

#define QDR_CONNECTION_COLUMN_COUNT 25
extern const char *qdr_connection_columns[QDR_CONNECTION_COLUMN_COUNT + 1];
Expand Down
6 changes: 3 additions & 3 deletions src/router_core/agent_link.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,13 @@

#include "router_core_private.h"

void qdra_link_get_first_CT(qdr_core_t *core, qdr_query_t *query, int offset);
void qdra_link_get_next_CT(qdr_core_t *core, qdr_query_t *query);
void qdra_link_get_first_CT(qdr_core_t *core, qdr_query_t *query, int offset) TA_REQ(core_thread_capability);
void qdra_link_get_next_CT(qdr_core_t *core, qdr_query_t *query) TA_REQ(core_thread_capability);
void qdra_link_update_CT(qdr_core_t *core,
qd_iterator_t *name,
qd_iterator_t *identity,
qdr_query_t *query,
qd_parsed_field_t *in_body);
qd_parsed_field_t *in_body) TA_REQ(core_thread_capability);

#define QDR_LINK_COLUMN_COUNT 30

Expand Down
6 changes: 3 additions & 3 deletions src/router_core/agent_router.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@

extern const char *qdr_router_columns[QDR_ROUTER_COLUMN_COUNT + 1];

void qdra_router_get_first_CT(qdr_core_t *core, qdr_query_t *query, int offset);
void qdra_router_get_next_CT(qdr_core_t *core, qdr_query_t *query);
void qdra_router_get_next_CT(qdr_core_t *core, qdr_query_t *query);
void qdra_router_get_first_CT(qdr_core_t *core, qdr_query_t *query, int offset) TA_REQ(core_thread_capability);
void qdra_router_get_next_CT(qdr_core_t *core, qdr_query_t *query) TA_REQ(core_thread_capability);
void qdra_router_get_next_CT(qdr_core_t *core, qdr_query_t *query) TA_REQ(core_thread_capability);

#endif
Loading

0 comments on commit a57a466

Please sign in to comment.