프로그래밍 QnA

trymp의 이미지

local_bh_disable() 이 동일 CPU 에서만 적용되는 이유가 궁금합니다.


커널을 공부하는 초보입니다. 커널 동기화와 관련되서 질문드리고자 합니다.

spin lock 은 특정 데이터에 관련된 락 매커니즘으로 알고 있습니다.

그래서 다른 CPU 혹은 동일 CPU 에서 그 특정 데이터를 변경하려고 할때,

접근을 배제하는 처리를 하는 것으로 알고 있습니다.

local_bh_enable()/local_bh_disable() 같이 softirq 를 배제처리 하는 것은

같은 CPU 에 의한 것만 차단하고 다른 CPU 에서는 재진입을 허용하는 것으로 압니다.

왜 이렇게 하는 거죠??

같은 CPU에 의한 것만 막고 다른 CPU 는 허용하면 동기화에 문제가 안생기나요?

고수님들의 많은 조언 부탁드립니다.

kor2u의 이미지

[급 질문] jsp에서 application/msword를 이용해서 파일다운로드 할때

안녕하세요.

jsp에서 contentType을 이용해서 msword로 해서 다운로드하는 페이지를 작성했는데요.
파일 다운로드나 열기를 하면 msword로 저장되고 열리는데,,,

문제는 파일을 열고 나서 다른이름으로 저장을 선택하면 파일형식이 doc가 아니라 html로 바뀐다는 문제가 있습니다.
이럴 경우 어떻게 해결해야 하는지 좀 알려주세요~~~

그럼 부탁드립니다. (__) 꾸벅

shint의 이미지

[질문] Qt QDomElement::setAttribute 입력순서 정하기

setAttribute("C1", "data");
setAttribute("C2", "data");
setAttribute("C3", "data");
setAttribute("C4", "data");
setAttribute("C5", "data"); 이런식으로 입력할경우.
C5, C2, C3, C4, C1 이렇게 document에 입력됩니다.

setAttribute로 입력한 순서대로 출력하려면 어떻게 해야하는지 알고 싶습니다.
혹시 아시느분 계시면 답변 부탁드립니다.

jeongheumjo의 이미지

[완료] 자바에서 클래스의 맴버 변수 생성(초기화) 관련 문법 혹은 익명 내부 클래스 초기화...

아래 코드에서 잘 모르겠는 부분이 있어서 이곳에 문의합니다.
아래 코드에서는 익명클래스가 사용되고 있습니다. 그런데 그 익명클래스의 인스턴스가 만들어지는 곳이 어느 메소드 내부가 아니고 그냥 클래스의 몸체 입니다. 바로 이 부분입니다.

ssibseya의 이미지

[질문]RVDS에서 malloc하면 abort가 뜹니다...?

RVDS4.0에서 __main으로 들어간 후, "__user_initial_stackheap()"을 돌려서 다음의 4가지 parameter를 설정해서 main으로 jump한 후
Stack_Heap.Stack_bottom
Stack_Heap.Stack_size
Stack_Heap.Heap_base
Stack_Heap.Heap_size
malloc을 실행 시키니 바로 abort가 떠서 더 이상 진행이 되지 않더군요.
stack이나 heap은 "__user_initial_stackheap()"를 통해 설정된다고 생각하는데 뭔가 문제가 있는 것 같습니다.

고견 부탁드립니다.

gloomyr의 이미지

이코드가 왜 에러가 안나는거죠? enum의 정의에 혼란이 오는군요

#include <stdio.h>
typedef enum aa
{
    a = 0,
    b = 1
}aa;
 
typedef enum bb
{
    c = 0,
    d = 1
}bb;
 
int main()
{
    aa a;
    a = c;
 
    printf("a : %d\n", a);
    return 0;
}

이게 왜 에러가 안나는거죠?
bb 에 있는 c가 aa a 에 대입이 되는건 뭔일이죠??
????

shint의 이미지

[질문] 파일 중간에 끼워넣기

SQLite가 너무 성능이 느려서. 파일 저장방식으로 바꿨습니다.
그와중에 XML도 괜찮을것같아서 테스트 중인데요.
파일로도 구현해보면 어떨까해서 해볼려고 합니다.

1. 파일 중간에 데이터를 끼워넣으려면. 파일을 나눈후에 저장해서 합치는 방법이 좋을까요?
2. 아니면. 그냥 다 읽은후에 모두 새로 저장하는게 좋을까요?
더 좋은 방법이 있는지 알고 싶습니다.

paeksj98의 이미지

Arm 보드에서 어플테스트중 문제가 있엇 질문드립니다.

아래 사항을 프린트 하고 어플이 죽습니다.
아래 메시지를 보는 방법이 나온사이트나 설명좀 부탁드립니다.
이걸보고 정확한 원인도 알수가 있나요..?

trymp의 이미지

TCP 패킷을 수신할 때 local_bh_enable 하는 이유를 모르겠습니다.


커널에서 네트워크 부분을 공부하고 있는 사람입니다.

TCP 패켓의 수신처리 부분을 보고 있는데요. tcp_input.c 에서 tcp_data_queue() 함수입니다.

그런데 아래 처럼 user buffer 부분에 복사를 할 때 local_bh_enable()을 하는 이유를 모르겠습니다.

이부분이 원래 bh 가 disable 이 되어 있던 코드인가요?? 왜 복사하는 부분에만 BH 을 활성화시키는지 모르겠습니다.

페이지

프로그래밍 QnA 구독하기