'Linux API'에 해당되는 글 139건

  1. 2015.01.22 linux 최대 thread 갯수
  2. 2015.01.22 linux socket 관련
  3. 2014.11.26 alsa timestamp
  4. 2014.11.26 alsa async
  5. 2014.11.21 멀티캐스트 되는지 여부 확인
  6. 2014.11.19 getopt() / getopt_long()
  7. 2014.11.18 alsa debug function
  8. 2014.11.17 ALSA 드라이버 관련
  9. 2014.11.17 alsa 함수 - size / time
  10. 2014.11.03 alsa low latency
Linux API2015. 1. 22. 19:55

크게 제한은 없다.

단, 메모리의 영향을 받기 때문에 메모리가 적을수록 쓰레드의 숫자도 적어질수 밖에 없다.



cat /proc/sys/kernel/threads-max


number of threads = total virtual memory / (stack size*1024*1024)

Total Virtual Memory: ulimit -v (default is unlimited, thus you need to increase swap memory to increase this)

Total Stack Size: ulimit -s (default is 8Mb)


[링크 : http://stackoverflow.com/questions/344203/maximum-number-of-threads-per-process-in-linux]

'Linux API' 카테고리의 다른 글

lirc - linux IR Remote control  (0) 2015.03.31
vaapi vdpau uvd  (6) 2015.03.26
getopt() / getopt_long()  (0) 2014.11.19
공유메모리  (0) 2014.09.02
timeval, gettimeofday()  (0) 2013.08.20
Posted by 구차니
Linux API/network2015. 1. 22. 19:49


TCP Connection

UDP Connectionless


그래서 UDP는

socket()

bind()

recvfrom()

sendto()

close()

----

socket()

gethostbyname()

sento()

recvfrom()

close()

로 진행되고


TCP는

socket()

bind()

listen()

accept()

select()

recv()

send()

close()

----

socket()

gethostbyname()

connect()

sen()

recv()

close()

로 진행된다.


[링크 : http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_71/rzab6/connectionor.htm] TCP

[링크 : http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_71/rzab6/connectionless.htm] UDP


소켓은

32K 정도는 열수 있을 듯.

[링크 : http://stackoverflow.com/questions/3430474/max-number-of-socket-on-linux]


recvfrom

[링크 : http://forum.falinux.com/zbxe/index.php?document_srl=441147&mid=C_LIB]


'Linux API > network' 카테고리의 다른 글

리눅스 TCP 소켓  (0) 2019.05.24
linux udp cpp example  (0) 2019.05.16
멀티캐스트 되는지 여부 확인  (0) 2014.11.21
net tools 소스코드  (0) 2011.11.07
INADDR_ANY/INADDR_BROADCAST/INADDR_NONE 매크로  (0) 2011.09.29
Posted by 구차니
Linux API/alsa2014. 11. 26. 21:37

'Linux API > alsa' 카테고리의 다른 글

alsa 예제  (0) 2024.06.04
alsa 구조  (0) 2015.05.29
alsa async  (0) 2014.11.26
alsa debug function  (0) 2014.11.18
ALSA 드라이버 관련  (0) 2014.11.17
Posted by 구차니
Linux API/alsa2014. 11. 26. 21:32
ALSA에서도 비동기 처리가 가능하다는데.
polling을 쓰라는거 보면 무언가 좀 unsafe 한 부분이 있나 보다 싶긴한데..
공식 문서를 찾아볼 필요가 있을 듯.

[링크 : http://alsa.opensrc.org/HowTo_Asynchronous_Playback]
 

'Linux API > alsa' 카테고리의 다른 글

alsa 구조  (0) 2015.05.29
alsa timestamp  (0) 2014.11.26
alsa debug function  (0) 2014.11.18
ALSA 드라이버 관련  (0) 2014.11.17
alsa 함수 - size / time  (0) 2014.11.17
Posted by 구차니
Linux API/network2014. 11. 21. 09:21
윈도우에서는 서버관련 유틸로 msdn에 제공하는 것 같고..
리눅스는 우분투 에서 확인해보니.. 해당 프로그램이 존재하지 않는다 -_-
(버전이 낮아서 그런걸지도..)

omping 은 레드햇용인가...?
아무튼 커널설정에서 보는것 외에는
설정하고 나서 핑 날려 보는 게 전부인가.. -_ㅠ

[링크 : http://www.cisco.com/en/US/docs/ios/ipmulti/configuration/guide/imc_verify_op.html]
[링크 : http://technet.microsoft.com/en-us/library/cc787891(v=ws.10).aspx]
[링크 : http://www-01.ibm.com/.../SSPHQG_7.1.0/com.ibm.powerha.trgd/ha_trgd_test_multicast.htm
[링크 : http://serverfault.com/questions/137976/how-do-i-know-if-ip-multicasting-is-enabled-on-my-network]
[링크 : http://linux.die.net/man/8/omping ]

'Linux API > network' 카테고리의 다른 글

linux udp cpp example  (0) 2019.05.16
linux socket 관련  (0) 2015.01.22
net tools 소스코드  (0) 2011.11.07
INADDR_ANY/INADDR_BROADCAST/INADDR_NONE 매크로  (0) 2011.09.29
hton(), ntoh()  (0) 2011.09.26
Posted by 구차니
Linux API2014. 11. 19. 10:48
리눅스에서 옵션으로 -h 나 --help 같이 두가지 옵션으로 주는 것을 처리해주는 api 인데
직접 작성해 본게 아니라 일단.. 이정도만 정리...

struct option declared in <getopt.h> as

struct option {
    const char *name;
    int         has_arg;
    int        *flag;
    int         val;

extern char *optarg;
extern int optind, opterr, optopt;
 
int getopt_long(int argc, char * const argv[],
           const char *optstring,
           const struct option *longopts, int *longindex);

optstring is a string containing the legitimate option characters. If such a character is followed by a colon, the option requires an argument, so getopt() places a pointer to the following text in the same argv-element, or the text of the following argv-element, in optarg. Two colons mean an option takes an optional arg; if there is text in the current argv-element (i.e., in the same word as the option name itself, for example, "-oarg"), then it is returned in optarg, otherwise optarg is set to zero. This is a GNU extension. If optstring contains W followed by a semicolon, then -W foo is treated as the long option --foo. (The -W option is reserved by POSIX.2 for implementation extensions.) This behavior is a GNU extension, not available with libraries before glibc 2. 
 
[링크 : http://linux.die.net/man/3/getopt_long


-D 는 옵션을 필요로 하는 녀석이라 :가 붙게 되어 D:가 기재되고
optarg에 해당 문자의 포인터가 들어가게 되어 strdup나 atoi 등을 이용해서 인자를 사용하게 된다.
int main(int argc, char *argv[])
{
        struct option long_option[] =
        {
                {"help", 0, NULL, 'h'},
                {"device", 1, NULL, 'D'},
                {"rate", 1, NULL, 'r'},
                {"channels", 1, NULL, 'c'},
                {"frequency", 1, NULL, 'f'},
                {"buffer", 1, NULL, 'b'},
                {"period", 1, NULL, 'p'},
                {"method", 1, NULL, 'm'},
                {"format", 1, NULL, 'o'},
                {"verbose", 1, NULL, 'v'},
                {"noresample", 1, NULL, 'n'},
                {"pevent", 1, NULL, 'e'},
                {NULL, 0, NULL, 0},
        };
 
       while (1) {
                int c;
                if ((c = getopt_long(argc, argv, "hD:r:c:f:b:p:m:o:vne", long_option, NULL)) < 0)
                        break;
                switch (c) {
                case 'h':
                        morehelp++;
                        break;
                case 'D':
                        device = strdup(optarg);
                        break;
                case 'r':
                        rate = atoi(optarg);
                        rate = rate < 4000 ? 4000 : rate;
                        rate = rate > 196000 ? 196000 : rate;
                        break;
                }

[링크 : http://www.alsa-project.org/alsa-doc/alsa-lib/_2test_2pcm_8c-example.html

[링크 : http://forum.falinux.com/zbxe/?mid=C_LIB&page=3&document_srl=408382] getopt()
[링크 : http://forum.falinux.com/zbxe/index.php?document_srl=519764&mid=C_LIB] getopt_long()
[링크 : http://linux.die.net/man/3/getopt]
[링크 : http://linux.die.net/man/3/getopt_long]

'Linux API' 카테고리의 다른 글

lirc - linux IR Remote control  (0) 2015.03.31
vaapi vdpau uvd  (6) 2015.03.26
linux 최대 thread 갯수  (0) 2015.01.22
공유메모리  (0) 2014.09.02
timeval, gettimeofday()  (0) 2013.08.20
Posted by 구차니
Linux API/alsa2014. 11. 18. 10:35
alsa의 latency.c를 실행하다 보니
깔끔하게 상태를 출력해주는 녀석이 있어서 찾아보게 됨.

Hardware PCM card 0 'mxs-evk' device 0 subdevice 0
Its setup is:
  stream       : PLAYBACK
  access       : RW_INTERLEAVED
  format       : S16_LE
  subformat    : STD
  channels     : 2
  rate         : 16000
  exact rate   : 16000 (16000/1)
  msbits       : 16
  buffer_size  : 128
  period_size  : 64
  period_time  : 4000
  tstamp_mode  : NONE
  period_step  : 1
  avail_min    : 64
  period_event : 0
  start_threshold  : 2147483647
  stop_threshold   : 128
  silence_threshold: 0
  silence_size : 0
  boundary     : 1073741824 


snd_pcm_dump(phandle, output);
snd_pcm_dump(chandle, output);
fflush(stdout); 


[링크 : http://www.alsa-project.org/alsa-doc/alsa-lib/group___p_c_m___dump.html#...1d8d]

----


  state       : RUNNING
  trigger_time: 2130.83093753
  tstamp      : 2160.96375002
  delay       : 48
  avail       : 16
  avail_max   : 44 

snd_output_t *output = NULL;
err = snd_output_stdio_attach(&output, stdout, 0);
if (err < 0) {
        printf("Output failed: %s\n", snd_strerror(err));
        return 0;
}
 
void showstat(snd_pcm_t *handle, size_t frames)
{
        int err;
        snd_pcm_status_t *status;
        snd_pcm_status_alloca(&status);
        if ((err = snd_pcm_status(handle, status)) < 0) {
                printf("Stream status error: %s\n", snd_strerror(err));
                exit(0);
        }
        printf("*** frames = %li ***\n", (long)frames);
        snd_pcm_status_dump(status, output);
}

[링크 : http://www.alsa-project.org/alsa-doc/alsa-lib/_2test_2latency_8c-example.html]  


[링크 : http://www.alsa-project.org/alsa-doc/alsa-lib/group___p_c_m___dump.html#...a51]
[링크 : http://www.alsa-project.org/alsa-doc/alsa-lib/group___p_c_m___dump.html]

'Linux API > alsa' 카테고리의 다른 글

alsa timestamp  (0) 2014.11.26
alsa async  (0) 2014.11.26
ALSA 드라이버 관련  (0) 2014.11.17
alsa 함수 - size / time  (0) 2014.11.17
alsa low latency  (0) 2014.11.03
Posted by 구차니
Linux API/alsa2014. 11. 17. 17:45

'Linux API > alsa' 카테고리의 다른 글

alsa async  (0) 2014.11.26
alsa debug function  (0) 2014.11.18
alsa 함수 - size / time  (0) 2014.11.17
alsa low latency  (0) 2014.11.03
SALSA - Small ALSA  (0) 2014.10.24
Posted by 구차니
Linux API/alsa2014. 11. 17. 17:41
size는 frame 단위
time은 usec 단위


period던 buffer 던 동일한 단위로 설정이 된다. 

'Linux API > alsa' 카테고리의 다른 글

alsa debug function  (0) 2014.11.18
ALSA 드라이버 관련  (0) 2014.11.17
alsa low latency  (0) 2014.11.03
SALSA - Small ALSA  (0) 2014.10.24
alsa + ffmpeg 벤치마크(?)  (0) 2014.10.23
Posted by 구차니
Linux API/alsa2014. 11. 3. 09:06
ALSA 구조(?)상

플레이시에는
사운드 카드로는 링버퍼에 값을 쌓아두고 커널/드라이버에서 일정주기 마다 데이터를 넣어주도록 되어있고

녹음시에는
사운드 카드에서 인터럽트 주기마다 데이터를 받아오도록 되어 있다.

물론 인터럽트가 많아질수록 지연은 짧아지겠지만
인터럽트로 인한 컨텍스트 스위칭의 부하가 많아 지므로 다른 프로세서들이 사용할 가용 cpu 는 줄어들게 되기에
음악 재생시 버퍼 크기 늘림으로 cpu 점유율이 낮아진 것을 봐서
벤치마크 내용과는 달리 임베디드 시스템에서의 적용은 쉽지 않을 것으로 보인다.




Audio Latency
    Programmed delay until data is processed
        Playback latency: buffer size
        Recording latency: period size
    Least full-duplex latency: period size x 2

System Latency
    Delay of system response
        Interrupt -> Wake-up
    Must not greater than buffer size
        Buffer underflow, overflow

[링크 : http://www.alsa-project.org/~tiwai/suselabs2003-audio-latency.pdf
[링크 : http://www.alsa-project.org/main/index.php/Low_latency_howto]

---
2014.11.13
[링크 : https://wiki.kldp.org/HOWTO/html/MIDI-HOWTO/x88.html
[링크 : http://www.gardena.net/benno/linux/audio/]

 http://elinux.org/images/8/82/Elc2011_lorriaux.pdf
 http://pyalsaaudio.sourceforge.net/terminology.html

'Linux API > alsa' 카테고리의 다른 글

ALSA 드라이버 관련  (0) 2014.11.17
alsa 함수 - size / time  (0) 2014.11.17
SALSA - Small ALSA  (0) 2014.10.24
alsa + ffmpeg 벤치마크(?)  (0) 2014.10.23
alsa 패키지 종류  (0) 2014.10.21
Posted by 구차니