프로그래밍 QnA

fivestar의 이미지

커널 패닉 메세지를 디버깅 해보았습니다..

커널 패닉이 발생하여 oops 메세지를 추적한 결과

원본 source 를 objdump 하여 해당 주소를 확인해보니 아래와 같습니다.

5c7: f0 0f c1 87 80 00 00 lock xadd %eax,0x80(%rdi)

add명령어에서 패닉이 나는데 원인이 피연산자가 없어서는 아닐것 같은데 이유가 무엇일까요?

어셈을 잘 볼줄 몰라서.. 도움좀 부탁드립니다..:)

s97083의 이미지

[질문] sigaction 과 pause 사용에 문제가 생겼습니다.

안녕하세요
코드 참고해서 수정을 좀하고 있는데 아래와 같이 핸들러를 등록하고..

act.sa_handler = sighandler;
act.sa_flags = SA_RESTART;//0;
sigemptyset(&act.sa_mask);
sigaddset( &sigset, SIGUSR2);
sigaction(SIGUSR2, &act, NULL);
중간에 pause를 호출 했습니다.
while(run_flg) { <-- 전역 변수...
pause();
}

ksc4042의 이미지

TCP에서 MSS보다 큰 Size의 Packet을 보낼 때 Fragmentation은 어디서 일어나는지 궁굼합니다.

질문 그대로 MSS보다 큰 크기의 Packet을 보낼 때 송신측 Wireshark에서는 한 번에 MSS*4정도의 Data를 한 번에 보냈다고 나오는데, 받은 곳에서는 이를 세 개의 Packet으로 나누어 받았습니다.

이를 분할하는 부분이(분할하여 TCP Header를 붙이는 부분.) 소스에서 정확히 어느 부분인지 찾지 못하겠습니다. (net/ipv4/ip_out.c 이런 식으로..)

가상머신 환경에서 테스트하였습니다.

혹시 알고 계신 분이 있으신지요.

s97083의 이미지

[질문] sigaction 과 pause 사용에 문제가 생겼습니다.

안녕하세요
코드 참고해서 수정을 좀하고 있는데 아래와 같이 핸들러를 등록하고..

act.sa_handler = sighandler;
act.sa_flags = SA_RESTART;//0;
sigemptyset(&act.sa_mask);
sigaddset( &sigset, SIGUSR2);
sigaction(SIGUSR2, &act, NULL);
중간에 pause를 호출 했습니다.
while(run_flg) { <-- 전역 변수...
pause();
}

그리고 호출되는 sig 함수에 while 문의 탈출 조건을 걸었습니다.
void sighandler(int signo)
{
run_flg = 0;
}
문제는 pause까지 간 이후에 시그널을 받아도 pause 이후 부분부터 다시 시작하지를 않고요.
그냥 시그널만 받는 부분만 살아있습니다.

creatorJinsang의 이미지

[완료]클래스의 멤버로서 포인터 멤버를 가질 경우에 질문좀여!

class Room{
private:
        Place* place;
public:
        Room(const int& size);
};
 
Room::Room(const int& size){
	place = new Place[size];	
}

위와 같이 Room 클래스의 복사 생성자를 형성해서 넘어오는 인자 만큼 배열을 동적할당해주려고 합니다.
Room 클래스의 멤버 포인터 place를 이용하여 place 클래스의 성분에 대해 작업을 하려고 하는데, 초보자인 제 눈에도 여간 꺼림칙하네요;;

1. 저렇게 생성자 내에서 클래스 멤버 포인터를 동적할당할 경우, 일단 예외가 발생하지않는다면 메모리가 떠버리는 일은 없다고 생각하는데, 그렇다고 해도 저렇게 방치해도 될까요??

creatorJinsang의 이미지

클래스의 멤버로서 포인터 멤버를 가질 경우에 질문좀여!

class Room{
private:
        Place* place;
public:
        Room(const int& size);
};
 
Room::Room(const int& size){
	place = new Place[size];	
}

위와 같이 Room 클래스의 복사 생성자를 형성해서 넘어오는 인자 만큼 배열을 동적할당해주려고 합니다.
Room 클래스의 멤버 포인터 place를 이용하여 place 클래스의 성분에 대해 작업을 하려고 하는데, 초보자인 제 눈에도 여간 꺼림칙하네요;;

1. 저렇게 생성자 내에서 클래스 멤버 포인터를 동적할당할 경우, 일단 예외가 발생하지않는다면 메모리가 떠버리는 일은 없다고 생각하는데, 그렇다고 해도 저렇게 방치해도 될까요??

ksc4042의 이미지

TCP 송수신 관련하여 질문이 있습니다.

안녕하세요.

이번에 리눅스 커널을 처음 만저보는 초보입니다.

이번 프로젝트에서 TCP 헤더 아래에 제가 만드는 헤더를 빌드하여 사용하고 싶습니다.

이를 위하여 struct sk_buff(include/linux/skbuff.h)에 저희가 사용할 헤더를 지정하는 변수를 정의했습니다.

interoasis의 이미지

[초보] ncurses에서 메뉴 라이브러리나 폼 라이브러리를 사용할때 한글 사용법

ncurses를 이번에 접하고 공부하고 있는 학생입니다.
보통의 ncurses환경에서 한글 사용법은 http://kldp.org/node/59797 링크를 통해 알게됐는데요.

이 방법은 메뉴 라이브러리를 사용할때는 적용되지 않는것 같습니다.
아예 해당스트링이 출력자체가 안되네요.
menu.h를 쓸때 한글 출력하는 법을 알 수 있을까요?

declspec의 이미지

WDK 공부할때

WDK 공부를 하려고 책을 살까 하는데요
윈도우 디바이스 드라이버 라는 두꺼운 책
2009년에 나온게 좋은것 같은데...

WDK 는 윈도우7용까지 지원 되는것으로 다운받았는데
책을 대충 보니 윈도우Vista 까지는 얘기가 있어도 7 얘기는 없는데
상관없이 공부하고 예제 돌리고 해도 문제 없나요??

디바이스드라이버는 OS 에 밀접하게 관련이 있으니
OS 버전이 안맞으면 이론적인 공부는 되도 예제실습같은걸
직접 하지 못하지 않을까 걱정되서요...

k333ps의 이미지

C로 다차원 배열을 매개변수로 받는 함수 작성에 관해

안녕하세요.

항상 포트란으로 수치해석을 해왔었는데, C로 새롭게 작성하려고 합니다.

포트란의 서브루틴과 달리 C의 함수는 Call by reference 형식이라

배열 자체를 함수의 매개변수로 쓰기 위해선 약간의 꼼수(포인터 or 구조체)를

써야한다고 알고 있습니다. 포인터를 써서 함수 밖의 배열을 함수 내에서 처리하는

것에 대해선 어느정도 이해가 되었는데요, 구조체를 써서(이 방법이 권장되더군요)

함수 밖의 다차원 배열을 함수 안에서 자유롭게 처리하는 방법에 대해 간단하게나마

설명해주실수 있나요?

페이지

프로그래밍 QnA 구독하기