프로그래밍 QnA + 설치 및 활용 QnA

tms320c5x의 이미지

커널 타이머와 local_irq_disable() 비활성화 문제

디바이스 드라이버의 커널타이머도 타이머 인터럽트에 의해 동작하는걸로 이해하고 있고, local_irq_disable()은 인터럽트를 비활성시키는 함수로 아는데요. 아래 질문 요지는 local_irq_disable을 했는데 왜 커널타이머 루틴이 계속 수행하는지 입니다.

커널타이머는 1초마다 카운터 증가값을 찍는데, 응용에서 특정 저수준함수를 실행하면 그에 따른 드라이버 함수에서 local_irq_disable()을 실행하고 그다음에 약간의 지연루틴을 첨가합니다. 지연루틴 이유는 local_irq_disable 후에 지연동안 dmesg명령으로 커널타이머 카운트값이 계속 찍히는지 보려고 넣은거고 함수 끝엔 일부러 local_irq_enable()을 삭제한 상태입니다.
결과는 지연상태에서 dmesg명령을 2,3번 하면 타이머 카운터는 계속 증가해요. 하물며 함수 끝에 local_irq_enable()을 하지 않고 리턴된 후에 다른 루틴서 dmesg해도 계속 증가해요.

hbdhmj819의 이미지

C언어 while문과 for문의 차이는 무엇일까요?

보통 for문과 while문의 차이라고 하면 for문은 특정 범위 안(특정 횟수)에서 반복하는 것이고, while문은 조건이 참인 동안에 반복을 한다고 합니다.

python 같은 경우에는 이 설명에 딱 맞는데, C언어나 JAVA는 초기식, 조건식, 증감식 생략으로 무한 루프로 돌릴 수도 있고, 아니더라도 while문과 같은 방식?으로 코드를 반복하는 게 가능합니다. 그 역으로 for문 코드를 while문으로 변환해서 사용하는 것도 가능하고요.

그렇다면 굳이 for문과 while문 두 개가 존재하는 이유는 무엇일까요? 처음에는 for문은 일단 한 번은 실행하지만 while문은 조건이 거짓이면 아예 실행을 하지 않는 게 차이라고 생각했는데 for문도 조건식 부분을 손 보면 아예 실행하지 않는 게 가능하고....

아무리 생각해도 차이점을 모르겠네요. 예전에 테스트해봤을 때는 둘이 실행 시간에도 차이가 없었던 것으로 기억합니다.

roskeo의 이미지

softirq context에서 다른 hw interrupt가 수신되는 경우 질문입니다.

안녕하세요 커널 공부를 하고있는 커린이 입니다.

softirq process에 대해서 이해가 안가는 것이 있는데요

softirq 처리 루틴이 실행되다가 인터럽트(hardirq)가 수신되면 해당 인터럽트 서비스 루틴이 돌게 됩니다.

그러면 cpu제어가 hardirq로 넘어갈텐데요

만약 수신한 인터럽트의 서비스 루틴에 softirq bit을 set하는 부분(raise_softirq_irqoff)이 있다면 이 ISR이 끝나고 irq_exit을 호출하여 softirq를 실행하게 될텐데

이렇게 되면 기존에 실행하던 softirq 처리 루틴은 언제 실행되게 될까요?

softirq 실행 도중 interrupt가 수신되면 해당 ISR에서 softirq bit만 set 해주고 irq_exit호출하지 않고 다시 원래 컨텍스트로 돌아오게 될까요?

뭔가 두서가 없지만 고수님들의 답변 듣고싶습니다

감사합니다

chunj101의 이미지

정규식 반복

안녕하세요.

cidr를 정규식으로 유효성 검사를 하려고 합니다.

letpump의 이미지

라즈베리? UART(TX/RX) < - > TCP(TX/RX) 프로그램 구조 문의

순수 마이콤 엔지니어라서 이번 리눅스 쪽은 처음 접하여 구조 설계 문의드립니다.

interface : UART <-> TCP 구조입니다.

기능 내용

- TCP 연결을 하고 서버 단과 데이터를 송수신

UART(일정주기 수신) -> TCP 클라이언트 모드 send 데이터 후 연결 해제

TCP 서버(데이터 요청, 변경) -> UART(전송)

문의 1)
TCP 클라이언트 모드로 서버에 데이터 전송 후 연결을 해제 하고 대기하는데

TCP서버가 클라이언트에 데이터를 요청 할 수가 있는가?

제 생각) TCP 클라이언트 모드에서 데이터를 send하고 연결을 해제 하고 서버 모드 소켓 실행 send시 소켓off
- 같은 포트를 이용해야 하므로 서로 번갈아 가면서 실행.

문의 2)
프로그램 구조문의 드립니다.

1. UART rev thread
2. TCP client thread
3. TCP server thread

pjh9965의 이미지

c++ error(expected declaration or statement at end of input

제목과 같은 오류가 메인 함수에 발생하는데..중괄호나 괄호를 잘못입력한 것 같은데 제 눈에 안 보여서 ㅜㅜ조언 구합니다.

#include
#include
#include

typedef struct _cafe {
char menu[20];
char type;
int price;
struct _cafe *next;
}Cafe;

Cafe *head=NULL;

익명 사용자의 이미지

배열 쉬프트 관련 질문입니다.

i번째 클라이언트가 나가면 i번째 배열값을 없애고 그 뒤의 값들을 앞쪽으로 당겨오는걸 해보고 있는데
나가는 순서가 바뀔때마다 중간에 공백이 하나 생기네요
어떤식으로 바꿔야하나요..?

재르의 이미지

리눅스와 윈도우 시간 동기화 문의


현재 내부망을 이용하여, 리눅스와 윈도우 프로그램이 통신을 하는 시스템 입니다.
각자 가지고 있는 시간이 달라 동기화를 진행 하기 위하여,
윈도우에 ntp 서버를 구축하여, 리눅스에서 ntp를 이용하여 해당 시간을 읽어 적용 하는 것 까지 진행하였습니다.

리눅스에서 서버의 시간을 읽어 오는 방법은 rdate 와 ntpdate 두가지 명령이 있는데
두가지 명령의 차이는
rdate는 즉시 시간을 보정하고, ntpdate는 천천히 보정을 하고
rdate는 23번 포트 TCP/UDP 를 통하여, ntpdate는 123번 포트 UDP를 통하여, 읽어 온다.

위와 같은 내용을 공부하면서 의문점이 몇가지 들어 문의 드립니다.

1. 윈도우 환경을 rdate로 읽어 올수 있는 서버로 구성을 할수 있는지?
(time.bora.net 같은 공인 서버는 rdate 와 ntpdate 모두 적용 되는데 이와 구성이 가능한지
안 된다하면, 왜 안 되는 이유도 궁금합니다)

페이지

프로그래밍 QnA + 설치 및 활용 QnA 구독하기