W

포스트: 955|조회수: 0|ARTIFACT
Items

Posts

955 posts
[WOWs] 잠수함

[WOWs] 잠수함

월오쉽에 항상 제기되던 질문이 하나 있습니다. 잠수함 나오나요? 그에 대한 답변은 항상 이랬죠. 안 나옵니다. 그러고나선 만우절이나 할로윈 때 떡밥을 하나 둘 씩 던져대기 시작하더니 이번에는 이벤트 용으로 구현된 잠수함이 나오고야 말았습니다. 출처 할로윈용 맵이지만 잠수함을 제법 제대로 구현했다는게 보입니다. 잠수함은 수상함과 다르게 잠수를 할 수 있다는 점에서 다른 함종과 크게 다릅니다. 그에 따른 작업량도 다르죠. 필수적으로 전체 맵에서 바다의 심도와 해저바닥을 만들어야합니다. 해저면은 깊은 바다는 그냥 넘어간다 치더라도 섬과 해안선의 해저는 구현을 해야합니다. 때문에 워게이밍이 잠수함을 추가하는데 난색을 표했었죠. 잠수함 자체의 문제도 있습니다. 우선 잠수함은 기본적으로 매

[라즈베리파이] 워크큐(Workqueue) - ftrace 동작 확인

Guillermo Austin Kim|2018년 9월 17일

이번에는 라즈베리파이에서 워크가 실제 어떻게 동작하는지 ftrace로 확인하겠습니다. 이를 위해 다음과 같이 ftrace 로그를 설정할 필요가 있습니다.#!/bin/sh echo 0 > /sys/kernel/debug/tracing/tracing_onsleep 1echo "tracing_off" echo 0 > /sys/kernel/debug/tracing/events/enablesleep 1echo "events disabled" echo secondary_start_kernel > /sys/kernel/debug/tracing/set_ftrace_filtersleep 1echo "set_ftrace_filter init" echo function > /sys/kern

[라즈베리파이] 워크큐(Workqueue) - worker_thread() 함수 분석(3)

Guillermo Austin Kim|2018년 9월 16일

Contents of tableworker_thread() 함수 분석(1)worker_thread() 함수 분석(2)worker_thread() 함수 분석(3) 이번에는 worker_thread() 함수에서 가장 중요한 37번 줄 코드를 분석할 차례입니다. 위 그림에서 워커 쓰레드의 “실행” 단계입니다. 코드를 봅시다.37do {38struct work_struct *work =39list_first_entry(&pool->worklist,40 struct work_struct, entry);4142pool->watchdog_ts = jiffies;4344if (likely(!(*work_data_bits(work) & WORK_STRUCT_

[라즈베리파이] 워크큐(Workqueue) - worker_thread() 함수 분석(2)

Guillermo Austin Kim|2018년 9월 13일

먼저 워커 쓰레드 핸들 함수인 worker_thread() 를 분석합니다.1 static int worker_thread(void *__worker)2 {3struct worker *worker = __worker;4struct worker_pool *pool = worker->pool;56worker->task->flags |= PF_WQ_WORKER;7 woke_up:8spin_lock_irq(&pool->lock);910/* am I supposed to die? */11if (unlikely(worker->flags & WORKER_DIE)) {12spin_unlock_irq(&pool->lock);13WARN_ON_ONCE(!l