trying to move file tracking to unix

This commit is contained in:
Allen Webster 2017-06-30 22:33:15 -04:00
parent 3d0693c6b6
commit 2046021124
2 changed files with 18 additions and 25 deletions

View File

@ -383,13 +383,13 @@ Sys_CLI_Call_Sig(system_cli_call){
LINUX_FN_DEBUG("%s %s", path, script_name); LINUX_FN_DEBUG("%s %s", path, script_name);
int pipe_fds[2]; int pipe_fds[2];
if(pipe(pipe_fds) == -1){ if (pipe(pipe_fds) == -1){
perror("system_cli_call: pipe"); perror("system_cli_call: pipe");
return 0; return 0;
} }
pid_t child_pid = fork(); pid_t child_pid = fork();
if(child_pid == -1){ if (child_pid == -1){
perror("system_cli_call: fork"); perror("system_cli_call: fork");
return 0; return 0;
} }
@ -397,7 +397,7 @@ Sys_CLI_Call_Sig(system_cli_call){
enum { PIPE_FD_READ, PIPE_FD_WRITE }; enum { PIPE_FD_READ, PIPE_FD_WRITE };
// child // child
if(child_pid == 0){ if (child_pid == 0){
close(pipe_fds[PIPE_FD_READ]); close(pipe_fds[PIPE_FD_READ]);
dup2(pipe_fds[PIPE_FD_WRITE], STDOUT_FILENO); dup2(pipe_fds[PIPE_FD_WRITE], STDOUT_FILENO);
dup2(pipe_fds[PIPE_FD_WRITE], STDERR_FILENO); dup2(pipe_fds[PIPE_FD_WRITE], STDERR_FILENO);
@ -413,7 +413,8 @@ Sys_CLI_Call_Sig(system_cli_call){
perror("system_cli_call: execv"); perror("system_cli_call: execv");
} }
exit(1); exit(1);
} else { }
else{
close(pipe_fds[PIPE_FD_WRITE]); close(pipe_fds[PIPE_FD_WRITE]);
*(pid_t*)&cli_out->proc = child_pid; *(pid_t*)&cli_out->proc = child_pid;
@ -426,7 +427,7 @@ Sys_CLI_Call_Sig(system_cli_call){
epoll_ctl(linuxvars.epoll, EPOLL_CTL_ADD, pipe_fds[PIPE_FD_READ], &e); epoll_ctl(linuxvars.epoll, EPOLL_CTL_ADD, pipe_fds[PIPE_FD_READ], &e);
} }
return 1; return(true);
} }
internal internal
@ -436,7 +437,6 @@ Sys_CLI_Begin_Update_Sig(system_cli_begin_update){
internal internal
Sys_CLI_Update_Step_Sig(system_cli_update_step){ Sys_CLI_Update_Step_Sig(system_cli_update_step){
int pipe_read_fd = *(int*)&cli->out_read; int pipe_read_fd = *(int*)&cli->out_read;
fd_set fds; fd_set fds;
@ -462,17 +462,17 @@ Sys_CLI_Update_Step_Sig(system_cli_update_step){
} }
*amount = (ptr - dest); *amount = (ptr - dest);
return (ptr - dest) > 0; return((ptr - dest) > 0);
} }
internal internal
Sys_CLI_End_Update_Sig(system_cli_end_update){ Sys_CLI_End_Update_Sig(system_cli_end_update){
pid_t pid = *(pid_t*)&cli->proc; pid_t pid = *(pid_t*)&cli->proc;
b32 close_me = 0; b32 close_me = false;
int status; int status;
if(pid && waitpid(pid, &status, WNOHANG) > 0){ if(pid && waitpid(pid, &status, WNOHANG) > 0){
close_me = 1; close_me = true;
cli->exit = WEXITSTATUS(status); cli->exit = WEXITSTATUS(status);
@ -483,7 +483,7 @@ Sys_CLI_End_Update_Sig(system_cli_end_update){
close(*(int*)&cli->out_write); close(*(int*)&cli->out_write);
} }
return close_me; return(close_me);
} }
// //
@ -559,7 +559,6 @@ JobThreadProc(void* lpParameter){
full_job->job.callback(&linuxvars.system, full_job->job.callback(&linuxvars.system,
thread, thread_memory, full_job->job.data); thread, thread_memory, full_job->job.data);
LinuxScheduleStep(); LinuxScheduleStep();
//full_job->running_thread = 0;
thread->running = 0; thread->running = 0;
system_acquire_lock(cancel_lock); system_acquire_lock(cancel_lock);
@ -735,9 +734,7 @@ Sys_Cancel_Job_Sig(system_cancel_job){
Full_Job_Data *job = queue->jobs + (job_id % QUEUE_WRAP); Full_Job_Data *job = queue->jobs + (job_id % QUEUE_WRAP);
Assert(job->id == job_id); Assert(job->id == job_id);
u32 thread_id = u32 thread_id = InterlockedCompareExchange(&job->running_thread, 0, THREAD_NOT_ASSIGNED);
InterlockedCompareExchange(&job->running_thread,
0, THREAD_NOT_ASSIGNED);
if (thread_id != THREAD_NOT_ASSIGNED && thread_id != 0){ if (thread_id != THREAD_NOT_ASSIGNED && thread_id != 0){
i32 thread_index = thread_id - 1; i32 thread_index = thread_id - 1;
@ -746,7 +743,6 @@ Sys_Cancel_Job_Sig(system_cancel_job){
i32 cancel_cv = group->cancel_cv0 + thread_index; i32 cancel_cv = group->cancel_cv0 + thread_index;
Thread_Context *thread = group->threads + thread_index; Thread_Context *thread = group->threads + thread_index;
system_acquire_lock(cancel_lock); system_acquire_lock(cancel_lock);
thread->cancel = 1; thread->cancel = 1;
@ -764,7 +760,7 @@ Sys_Cancel_Job_Sig(system_cancel_job){
internal internal
Sys_Check_Cancel_Sig(system_check_cancel){ Sys_Check_Cancel_Sig(system_check_cancel){
b32 result = 0; b32 result = false;
Thread_Group *group = linuxvars.groups + thread->group_id; Thread_Group *group = linuxvars.groups + thread->group_id;
i32 thread_index = thread->id - 1; i32 thread_index = thread->id - 1;
@ -772,7 +768,7 @@ Sys_Check_Cancel_Sig(system_check_cancel){
system_acquire_lock(cancel_lock); system_acquire_lock(cancel_lock);
if (thread->cancel){ if (thread->cancel){
result = 1; result = true;
} }
system_release_lock(cancel_lock); system_release_lock(cancel_lock);
@ -781,13 +777,10 @@ Sys_Check_Cancel_Sig(system_check_cancel){
internal internal
Sys_Grow_Thread_Memory_Sig(system_grow_thread_memory){ Sys_Grow_Thread_Memory_Sig(system_grow_thread_memory){
void *old_data;
i32 old_size, new_size;
system_acquire_lock(CANCEL_LOCK0 + memory->id - 1); system_acquire_lock(CANCEL_LOCK0 + memory->id - 1);
old_data = memory->data; void *old_data = memory->data;
old_size = memory->size; i32 old_size = memory->size;
new_size = l_round_up_i32(memory->size*2, KB(4)); i32 new_size = l_round_up_i32(memory->size*2, KB(4));
memory->data = system_memory_allocate(new_size); memory->data = system_memory_allocate(new_size);
memory->size = new_size; memory->size = new_size;
if (old_data){ if (old_data){
@ -803,7 +796,7 @@ Sys_Grow_Thread_Memory_Sig(system_grow_thread_memory){
#if FRED_INTERNAL #if FRED_INTERNAL
#ifdef OLD_JOB_QUEUE #if defined(OLD_JOB_QUEUE)
internal internal
INTERNAL_Sys_Get_Thread_States_Sig(internal_get_thread_states){ INTERNAL_Sys_Get_Thread_States_Sig(internal_get_thread_states){
Work_Queue *queue = linuxvars.queues + id; Work_Queue *queue = linuxvars.queues + id;
@ -2755,7 +2748,7 @@ main(int argc, char **argv){
} }
#include "linux_4ed_fonts.cpp" #include "linux_4ed_fonts.cpp"
#include "linux_4ed_file_track.cpp" #include "unix_4ed_file_track.cpp"
#include "4ed_font_static_functions.cpp" #include "4ed_font_static_functions.cpp"
// BOTTOM // BOTTOM