mirror of
https://gitlab.nic.cz/labs/bird.git
synced 2024-12-22 09:41:54 +00:00
Thread config has an explicit structure
This commit is contained in:
parent
6f67e47ad5
commit
971d651268
@ -63,7 +63,7 @@ struct config {
|
|||||||
char *err_file_name; /* File name containing error */
|
char *err_file_name; /* File name containing error */
|
||||||
char *file_name; /* Name of main configuration file */
|
char *file_name; /* Name of main configuration file */
|
||||||
int file_fd; /* File descriptor of main configuration file */
|
int file_fd; /* File descriptor of main configuration file */
|
||||||
int thread_count; /* How many worker threads to prefork */
|
struct thread_config threads; /* Thread settings */
|
||||||
|
|
||||||
struct sym_scope *root_scope; /* Scope for root symbols */
|
struct sym_scope *root_scope; /* Scope for root symbols */
|
||||||
struct sym_scope *current_scope; /* Current scope where we are actually in while parsing */
|
struct sym_scope *current_scope; /* Current scope where we are actually in while parsing */
|
||||||
|
@ -73,6 +73,14 @@ void birdloop_ping(struct birdloop *loop);
|
|||||||
void birdloop_add_socket(struct birdloop *, struct birdsock *);
|
void birdloop_add_socket(struct birdloop *, struct birdsock *);
|
||||||
void birdloop_remove_socket(struct birdloop *, struct birdsock *);
|
void birdloop_remove_socket(struct birdloop *, struct birdsock *);
|
||||||
|
|
||||||
|
/* Initializations */
|
||||||
void birdloop_init(void);
|
void birdloop_init(void);
|
||||||
|
|
||||||
|
struct thread_config {
|
||||||
|
uint count;
|
||||||
|
};
|
||||||
|
|
||||||
|
void bird_thread_commit(struct thread_config *new);
|
||||||
|
|
||||||
|
|
||||||
#endif /* _BIRD_IO_LOOP_H_ */
|
#endif /* _BIRD_IO_LOOP_H_ */
|
||||||
|
@ -125,7 +125,7 @@ mrtdump_base:
|
|||||||
|
|
||||||
conf: THREADS expr {
|
conf: THREADS expr {
|
||||||
if ($2 < 1) cf_error("Number of threads must be at least one.");
|
if ($2 < 1) cf_error("Number of threads must be at least one.");
|
||||||
new_config->thread_count = $2;
|
new_config->threads.count = $2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1106,22 +1106,19 @@ bird_thread_shutdown(void * _ UNUSED)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
bird_thread_commit(struct config *new, struct config *old UNUSED)
|
bird_thread_commit(struct thread_config *new)
|
||||||
{
|
{
|
||||||
ASSERT_DIE(birdloop_inside(&main_birdloop));
|
ASSERT_DIE(birdloop_inside(&main_birdloop));
|
||||||
|
|
||||||
if (new->shutdown)
|
if (!new->count)
|
||||||
return;
|
new->count = 1;
|
||||||
|
|
||||||
if (!new->thread_count)
|
|
||||||
new->thread_count = 1;
|
|
||||||
|
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
struct birdloop_pickup_group *group = &pickup_groups[0];
|
struct birdloop_pickup_group *group = &pickup_groups[0];
|
||||||
LOCK_DOMAIN(attrs, group->domain);
|
LOCK_DOMAIN(attrs, group->domain);
|
||||||
|
|
||||||
int dif = group->thread_count - (thread_dropper_goal = new->thread_count);
|
int dif = group->thread_count - (thread_dropper_goal = new->count);
|
||||||
bool thread_dropper_running = !!thread_dropper;
|
bool thread_dropper_running = !!thread_dropper;
|
||||||
|
|
||||||
UNLOCK_DOMAIN(attrs, group->domain);
|
UNLOCK_DOMAIN(attrs, group->domain);
|
||||||
|
@ -203,12 +203,13 @@ sysdep_preconfig(struct config *c)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
sysdep_commit(struct config *new, struct config *old)
|
sysdep_commit(struct config *new, struct config *old UNUSED)
|
||||||
{
|
{
|
||||||
if (!new->shutdown)
|
if (!new->shutdown)
|
||||||
|
{
|
||||||
log_switch(0, &new->logfiles, new->syslog_name);
|
log_switch(0, &new->logfiles, new->syslog_name);
|
||||||
|
bird_thread_commit(&new->threads);
|
||||||
bird_thread_commit(new, old);
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
@ -38,7 +38,6 @@ void cmd_reconfig_status(void);
|
|||||||
void cmd_shutdown(void);
|
void cmd_shutdown(void);
|
||||||
void cmd_graceful_restart(void);
|
void cmd_graceful_restart(void);
|
||||||
void cmd_show_threads(int);
|
void cmd_show_threads(int);
|
||||||
void bird_thread_commit(struct config *new, struct config *old);
|
|
||||||
|
|
||||||
#define UNIX_DEFAULT_CONFIGURE_TIMEOUT 300
|
#define UNIX_DEFAULT_CONFIGURE_TIMEOUT 300
|
||||||
|
|
||||||
|
@ -559,10 +559,10 @@ void cmd_reconfig_undo_notify(void) {}
|
|||||||
#include "conf/conf.h"
|
#include "conf/conf.h"
|
||||||
void sysdep_preconfig(struct config *c UNUSED) {}
|
void sysdep_preconfig(struct config *c UNUSED) {}
|
||||||
|
|
||||||
void bird_thread_commit(struct config *new, struct config *old);
|
void bird_thread_commit(struct thread_config *new);
|
||||||
void sysdep_commit(struct config *new, struct config *old)
|
void sysdep_commit(struct config *new, struct config *old UNUSED)
|
||||||
{
|
{
|
||||||
bird_thread_commit(new, old);
|
bird_thread_commit(&new->threads);
|
||||||
}
|
}
|
||||||
|
|
||||||
void sysdep_shutdown_done(void) {}
|
void sysdep_shutdown_done(void) {}
|
||||||
|
Loading…
Reference in New Issue
Block a user