792
|
|
|
Scott James Remnant |
16 years ago
|
|
|
791
|
|
|
Scott James Remnant |
16 years ago
|
|
|
790
|
|
|
Scott James Remnant |
16 years ago
|
|
|
789
|
|
|
Scott James Remnant |
16 years ago
|
|
|
788
|
|
|
Scott James Remnant |
16 years ago
|
|
|
787
|
|
|
Scott James Remnant |
16 years ago
|
|
|
786
|
|
|
Scott James Remnant |
16 years ago
|
|
|
785
|
|
|
Scott James Remnant |
16 years ago
|
|
|
784
|
|
Complete the simplification of job config; rather than try and precompute job replacements, keeping them all in the same hash table and chaining them together, we just work it out when it's actually necessary based on what's in the conf_sources list.
* init/job.h (JobConfig): Remove the replacement and replacement_for members and put a deleted member in instead. * init/job.c (job_config_new): Initialise deleted to FALSE; don't replace the job into the hash table, since we only want the current one in there now. (job_config_find_by_name): Now that there is only ever one job config in the hash table, we don't need any special function and can just use nih_hash_lookup directly, so drop this function. (job_config_should_replace): Rename to job_config_replace (job_config_replace): Rework, it now checks to see whether there are instances, and if not removes the job from the hash table before selecting a new one (which might be the same job). * init/tests/test_job.c (test_config_new): Update test to check deleted starts off as FALSE and that the job isn't in the hash. (test_config_find_by_name): Drop. (test_config_should_replace): Rename and rewrite to test replacement actually works as we expect. (test_change_state): Update tests for entering the waiting mode and replacing jobs. (test_find_by_pid, test_find_by_id, test_handle_event) (test_handle_event_finished): Add jobs to the hash table, otherwise we can't find them (test_child_reaper): Add job to the hash table, and also create a source for it since we end up with it in the waiting state so need to be able to keep it. * init/Makefile.am (test_process_LDADD, test_job_LDADD) (test_event_LDADD): Need the full .o file list now. * init/conf.c (conf_file_destroy): Rewrite to mark the job deleted, call job_config_replace if it's the current job and free it if it isn't the current job either before or after that call. (conf_reload_path): Handle job replacement here; look up the old job in the hash table, if it exists attempt a replacement otherwise add the new job to the hash table. * init/tests/test_conf.c (test_source_reload_job_dir) (test_source_reload_conf_dir, test_source_reload_file): Update tests to check job->deleted and use nih_hash_lookup to see whether it's the current job. (test_file_destroy): Write tests to check the common cases, we don't need to worry about the intermediate now since they can't happen. * init/parse_job.c (parse_job): Massively simplify, this only creates the config and parses it now. * init/tests/test_parse_job.c (test_parse_job): Remove the replacement checks. * init/tests/test_event.c (test_poll): Add configs to the hash table so they can be found. * TODO: Update.
|
Scott James Remnant |
16 years ago
|
|
|
783
|
|
* init/conf.h (ConfSource): Remove priority, we'll place these in a linked list and use that order instead. (ConfSourcePriority): Drop accordingly. (ConfItem): Drop this structure; permitting jobs and states to be defined inside larger conf files made things complicated for no benefit; move the item union into (ConfFile): here, instead of the items list. (ConfItemType): Drop accordingly. * init/conf.c (conf_init): Store sources in a linked list, instead of a hash table; no idea why it ever was. (conf_source_new): Drop priority argument and add to list not hash. (conf_file_new): Set data to NULL instead of initialising items, set destructor to conf_file_destroy. (conf_item_destroy): Rename to conf_file_destroy (conf_file_destroy): and adjust to refer to ConfItem instead, getting the item type through the source. (conf_item_new): Drop. (conf_reload): Iterate as linked list not hash table. (conf_reload_path): Simplify handling of old files and items a little, just look it up and always free if it exists before parsing the new file. (conf_file_get): No longer any need for this function. * init/tests/test_conf.c (test_file_get, test_item_new): Drop test functions for those that have been removed. (test_item_destroy): Rename to test_file_destroy. (test_source_new): Don't pass or check priority, or hash lookup. (test_file_new): Check data is set correctly. (test_source_reload_job_dir, test_source_reload_conf_dir) (test_source_reload_file): Update tests accordingly. * init/parse_conf.c (stanza_job): Drop the job stanza, jobs may only be defined in dedicated directories. * init/tests/test_parse_conf.c (test_parse_conf): Simply check to only make sure the file is parsed. (test_stanza_job): Drop function. * init/main.c: Update calls to conf_source_new. * init/init.supp: Update intermediate function in suppression.
|
Scott James Remnant |
16 years ago
|
|
|
782
|
|
|
Scott James Remnant |
16 years ago
|
|
|
781
|
|
|
Scott James Remnant |
16 years ago
|
|
|
780
|
|
|
Scott James Remnant |
16 years ago
|
|
|
779
|
|
|
Scott James Remnant |
16 years ago
|
|
|
778
|
|
|
Scott James Remnant |
16 years ago
|
|
|
777
|
|
|
Scott James Remnant |
16 years ago
|
|
|
776
|
|
|
Scott James Remnant |
16 years ago
|
|
|
775
|
|
|
Scott James Remnant |
16 years ago
|
|
|
774
|
|
|
Scott James Remnant |
16 years ago
|
|
|
773
|
|
|
Scott James Remnant |
16 years ago
|
|
|