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

  1. 2018.12.20 cups api
  2. 2018.10.22 system wait stdout
  3. 2018.04.23 전원버튼 IRQ 발생 관련
  4. 2018.04.17 linux kernel governor 관련 코드
  5. 2017.04.19 v4l2 timestamp
  6. 2016.12.22 linux shared memory 관련
  7. 2016.12.20 linux ipc
  8. 2016.12.20 pthread detach while
  9. 2016.10.07 fd <-> fp 변환
  10. 2016.06.28 shared memory - linux/IPC
Linux API2018. 12. 20. 13:06

lp나 lpr 명령어의 소스코드를 보면 좋을텐데 어디서 구할 수 있으려나?

그나저나.. cups 외에는 프린터 관련 api가 없는건가?


원본링크 깨져서..

[링크 : https://wiki.linuxfoundation.org/images/1/15/Lexington06-cups-api.pdf] 구글 웹캐시

[링크 : https://refspecs.linuxfoundation.org/LSB_3.2.0/LSB-Printing/LSB-Printing/libcupsman.html]

[링크 : http://janaxelson.com/code/printer.c]


+

lpr.c로 검색하니 하나 나오긴 하네.. 얘도 cups api를 쓴 듯?

[링크 : https://opensource.apple.com/source/cups/cups-86/berkeley/lpr.c.auto.html]


+

[링크 : https://github.com/apple/cups]

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

syslog c api(?)  (0) 2021.02.17
libescp  (0) 2019.01.03
system wait stdout  (0) 2018.10.22
lirc - linux IR Remote control  (0) 2015.03.31
vaapi vdpau uvd  (6) 2015.03.26
Posted by 구차니
Linux API2018. 10. 22. 14:52

[링크 : https://linux.die.net/man/3/system]

[링크 : https://linux.die.net/man/2/wait]


+

system으로는 실행 내용을 돌릴수 없으므로 ppipe 이용

[링크 : http://wanochoi.com/?p=178]


+

POST 인자로 body에 id와 password를 넘겨주는 curl을 실행하는 예제

#include <stdio.h>

#include <stdlib.h>


void main()

{

        int ret = 0;

        int status = 0;


        unsigned char cmd[255];

        unsigned char id[32] = "admin";

        unsigned char pw[32] = "admin";

        unsigned char url[] = "http://localhost:3000/api/test";

        unsigned char header[] = "-H 'Content-Type: application/json'";

        unsigned char data = "-d '{ \"id\":\"%s\",\"password\":\"%s\"}'";

        sprintf(cmd, "curl -X POST %s %s -d '{ \"id\":\"%s\",\"password\":\"%s\"}'",

                url, header, id, pw);

        printf("%s\n",cmd);


//      ret = system(cmd);

//      wait(&status);


        FILE *output = popen(cmd, "r");

        char buf[255];

        int pos = 0;

        while( !feof(output) && !ferror(output) )

        {

                int bytesRead = fread( buf + pos , 1, 128, output );

                pos += bytesRead;

        }


        printf("buf : [%s]\n",buf);


//      printf("ret : [%d]\n",ret);

//      printf("sta : [%d]\n",WEXITSTATUS(status));


+

이상한 메시지는 curl 을 콘솔에서 실행할때에도 안나오는데 아무튼. pipe로 실행하면 넘겨져 온다. 

보기 싫으면 --silent 옵션주면 끝

# ./a.out

curl -X POST http://localhost:3000/api/test -H 'Content-Type: application/json' -d '{ "id":"1234","password":"1234"}'

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

                                 Dload  Upload   Total   Spent    Left  Speed

100   397  100   363  100    34  18426   1725 --:--:-- --:--:-- --:--:-- 19105 

[링크 : https://makandracards.com/makandra/1615-disable-output-when-using-curl[

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

libescp  (0) 2019.01.03
cups api  (0) 2018.12.20
lirc - linux IR Remote control  (0) 2015.03.31
vaapi vdpau uvd  (6) 2015.03.26
linux 최대 thread 갯수  (0) 2015.01.22
Posted by 구차니
Linux API/linux2018. 4. 23. 13:46

잘은 모르겠지만.. PC에서 쓰이는 PWRBTN  같은 전원관련 스위치들은

PMIC를 통해 인터럽트를 발생시킨다고 하는데..

GPIO를 통한 인터럽트인지 I2C(혹은 SMBUS)를 통해 통보받은걸 인터럽트로 넘겨주는건진 모르겠다.


2.7.15 Power Control Signals

i.MX6 Qseven PMIC SOM supports two power control signals PWGIN and PWRBTN# on Qseven Edge connector.

PWGIN input from Qseven Edge connector is the active high signal which is used to enable the power of i.MX6

Qseven PMIC SOM. For more details on PWRGIN signal usage, refer section 3.1.2.

i.MX6 Qseven PMIC SOM supports PWRBTN# input from Qseven Edge connector which is the active low signal and

connected to i.MX6 CPU’s ONOFF pin. This pin can be used to On/Off the i.MX6 CPU by connecting push button in

the carrier board. When the board power is On, a button press between 750ms to 5s will send an interrupt to core to

request software to bring down the i.MX6 safely (if software supports). Otherwise, button press greater than 5s

results in a direct hardware power down which is applicable when software is unable to power Off the device. When

the i.MX6 CPU power supply is Off, a button press greater in duration than 750ms asserts an output signal to request

power from a power IC to power up the i.MX6 CPU. 

[링크 : http://www1.futureelectronics.com/doc/IWAVE%20SYSTEMS%20TECHNOLOGIES/G15MDataSheet.pdf]


 +static irqreturn_t pb_isr(int irq, void *dev_id)

+{

+ int ret;

+ int state;

+

+ ret = intel_soc_pmic_readb(DC_TI_SIRQ_REG);

+ if (ret < 0) {

+ pr_err("[%s] power button SIRQ REG read fail %d\n",

+ pb_input->name, ret);

+ return IRQ_NONE;

+ }

+

+ state = ret & SIRQ_PWRBTN_REL;

+

+ if (force_trigger && state) {

+ /* If we lost the press interrupt when short pressing

+ * power button to wake up board from S3, simulate one.

+ */

+ input_event(pb_input, EV_KEY, KEY_POWER, 1);

+ input_sync(pb_input);

+ input_event(pb_input, EV_KEY, KEY_POWER, 0);

+ input_sync(pb_input);

+ } else {

+ input_event(pb_input, EV_KEY, KEY_POWER, !state);

+ input_sync(pb_input);

+ pr_info("[%s] power button %s\n", pb_input->name,

+ state ? "released" : "pressed");

+ }

+

+ if (force_trigger)

+ force_trigger = 0;

+

+ return IRQ_HANDLED;

+}

+

+static int pb_probe(struct platform_device *pdev)

+{

+ int ret;

+

+ pwrbtn_irq = platform_get_irq(pdev, 0);

+ if (pwrbtn_irq < 0) {

+ dev_err(&pdev->dev,

+ "get irq fail: irq1:%d\n", pwrbtn_irq);

+ return -EINVAL;

+ }

+ pb_input = input_allocate_device();

+ if (!pb_input) {

+ dev_err(&pdev->dev, "failed to allocate input device\n");

+ return -ENOMEM;

+ }

+ pb_input->name = pdev->name;

+ pb_input->phys = "power-button/input0";

+ pb_input->id.bustype = BUS_HOST;

+ pb_input->dev.parent = &pdev->dev;

+ input_set_capability(pb_input, EV_KEY, KEY_POWER);

+ ret = input_register_device(pb_input);

+ if (ret) {

+ dev_err(&pdev->dev,

+ "failed to register input device:%d\n", ret);

+ input_free_device(pb_input);

+ return ret;

+ }

+

+ ret = request_threaded_irq(pwrbtn_irq, NULL, pb_isr,

+ IRQF_NO_SUSPEND, DRIVER_NAME, pdev);

+ if (ret) {

+ dev_err(&pdev->dev,

+ "[request irq fail0]irq:%d err:%d\n", pwrbtn_irq, ret);

+ input_unregister_device(pb_input);

+ return ret;

+ }

+

+ return 0;

+}

[링크 : https://github.com/.../uefi/cht-m1stable/patches/PWRBTN-add-driver-for-TI-PMIC.patch]


> +int intel_soc_pmic_set_pdata(const char *name, void *data, int len)

> +{

> + struct cell_dev_pdata *pdata;

> +

> + pdata = kzalloc(sizeof(*pdata), GFP_KERNEL);

> + if (!pdata) {

> + pr_err("intel_pmic: can't set pdata!\n");

> + return -ENOMEM;

> + }

> +

> + pdata->name = name;

> + pdata->data = data;

> + pdata->len = len;

> +

> + list_add_tail(&pdata->list, &pdata_list);

> +

> + return 0;

> +}

> +EXPORT_SYMBOL(intel_soc_pmic_set_pdata); 

[링크 : https://patchwork.kernel.org/patch/4227571/]



+

근데... 정기적으로 읽긴 그런 애매한 녀석이고..

이걸 인터럽트로 어떻게 던지지?



[링크 : https://www.intel.com/.../datasheets/7-series-chipset-pch-datasheet.pdf]

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

fopen64  (0) 2019.06.24
ubuntu iio rotate key 찾기 또 실패  (0) 2019.05.27
linux kernel governor 관련 코드  (0) 2018.04.17
linux shared memory 관련  (0) 2016.12.22
linux ipc  (0) 2016.12.20
Posted by 구차니
Linux API/linux2018. 4. 17. 14:39

odroid에서 가버너 정책에 따라 cpu 갯수와 속도가 달라져서

어떤식으로 구현되는지 한번 찾아보는 중


해당 내용은 linux kernel 의 device driver 부분에 구현되어있다.(drivers/cpufreq/) 


## drivers/cpufreq/cpufreq_hotplug.c

해당 파일은 크게 두부분으로 나뉘어있다. sysfs 를 구성하는 파일에 대한 내용을 구현한 부분과 governor 의 hotplug 정책에 맞게 cpu load를 계산해서 cpu 를 끄고 켜는 부분이다. 

[링크 : http://pinocc.tistory.com/47]

[링크 : https://www.kernel.org/doc/Documentation/cpu-freq/governors.txt]

[링크 : http://blog.dasomoli.org/472/] 위에꺼 번역?


[링크 : http://com.odroid.com/sigong/nf_board/nboard_view.php?brd_id=odroidc2&bid=7596]


+

cpu_up()

cpu_disable()


[링크 : https://android.googlesource.com/.../android-mediatek-sprout-3.4-kitkat-mr2/drivers/cpufreq]

[링크 : https://www.kernel.org/doc/html/v4.13/core-api/cpu_hotplug.html]

[링크 : https://www.kernel.org/doc/ols/2004/ols2004v2-pages-181-194.pdf]



+

[링크 : https://github.com/hardkernel/linux/blob/odroid-3.8.y/drivers/cpufreq/exynos4x12-cpufreq.c]

[링크 : https://github.com/hardkernel/linux/blob/odroid-3.8.y/drivers/cpufreq/exynos4x12-dvfs-hotplug.c]

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

ubuntu iio rotate key 찾기 또 실패  (0) 2019.05.27
전원버튼 IRQ 발생 관련  (0) 2018.04.23
linux shared memory 관련  (0) 2016.12.22
linux ipc  (0) 2016.12.20
pthread detach while  (0) 2016.12.20
Posted by 구차니
Linux API/v4l2017. 4. 19. 18:14

timestamp는 카메라 따라 맘대로 라는 건데

하드웨어적으로 비디오 싱크를 맞추는 것도 아니니

스테레오 카메라를 위한 보조 기능으로 쓸수도 없을지도?


According to http://comments.gmane.org/gmane.linux.drivers.video-input-infrastructure/39892 some v4l2 drivers (including the UVC one) do not use the realtime clock (wall time) but rather a monotonic clock that counts from a not specified point in time. On Linux, this is the boot time (i.e. uptime), however (and I suspect this is the cause of your mismatch) only the time that the computer was actually running (i.e. this clock does not run when the computer is suspended). 

[링크 : http://stackoverflow.com/questions/10266451/where-does-v4l2-buffer-timestamp-value-starts-counting]

    [링크 : http://stackoverflow.com/questions/10261537/timestamp-for-v4l2-image-capture]

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

v4l2 debug  (0) 2022.07.13
v4l2-ctl 밝기 조절  (0) 2022.07.06
uv4l  (0) 2015.09.13
리눅스에 웹캠 연결시 인식  (5) 2009.12.06
Posted by 구차니
Linux API/linux2016. 12. 22. 14:41
shm으로 시작하는걸 찾으니 아래와 같이 나오는데

shm_open같은 shm_으로 시작하는 애들은 정체가...

POSIX 관련인가.. shm은 리눅스 쪽?

$ man -k shm

shm_open (3)         - Create/open or unlink POSIX shared memory objects

shm_overview (7)     - Overview of POSIX shared memory

shm_unlink (3)       - Create/open or unlink POSIX shared memory objects

shmat (2)            - shared memory operations

shmctl (2)           - shared memory control

shmdt (2)            - shared memory operations

shmget (2)           - allocates a shared memory segment

shmop (2)            - shared memory operations 


#include <sys/ipc.h>

#include <sys/shm.h>


int shmget(key_t key, size_t size, int shmflg);

shmflg = IPC_CREAT | IPC_EXCL;


void *shmat(int shmid, const void *shmaddr, int shmflg);

int shmdt(const void *shmaddr);


int shmctl(int shmid, int cmd, struct shmid_ds *buf);


#include <sys/types.h>

#include <sys/shm.h>


void *shmat(int shmid, const void *shmaddr, int shmflg);

int shmdt(const void *shmaddr);


다시 보니.. shm은 SystemV 계열

shm_ 은 POSIX 계열 인듯?

[링크 : http://stackoverflow.com/questions/4582968/system-v-ipc-vs-posix-ipc]

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

전원버튼 IRQ 발생 관련  (0) 2018.04.23
linux kernel governor 관련 코드  (0) 2018.04.17
linux ipc  (0) 2016.12.20
pthread detach while  (0) 2016.12.20
fd <-> fp 변환  (0) 2016.10.07
Posted by 구차니
Linux API/linux2016. 12. 20. 21:10

머라도 하나씩 직접해보자 ㅜㅜ


[링크 : http://www.joinc.co.kr/w/Site/system_programing/Book_LSP/ch08_IPC]

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

linux kernel governor 관련 코드  (0) 2018.04.17
linux shared memory 관련  (0) 2016.12.22
pthread detach while  (0) 2016.12.20
fd <-> fp 변환  (0) 2016.10.07
shared memory - linux/IPC  (0) 2016.06.28
Posted by 구차니
Linux API/linux2016. 12. 20. 20:58

쓰레드 보다보니

공부는 해냐하는데 끄응 ㅜㅜ


암튼 쓰레드를 분리하면 자식 스레드가 종료시 자원을 반납하지만

분리할 쓰레드가 무한루프 돌면

메모리 누수로 이어지는 듯


프로세스는 종료되었고 그럼 프로세스로서 cpu를 할당받진 않을테나

해당 쓰레드가 공유하던 메모리만 붕 떠버리려나?


[링크 : http://www.joinc.co.kr/w/Site/system_programing/Book_LSP/ch07_Thread]

[링크 : http://stackoverflow.com/.../how-can-i-kill-a-pthread-that-is-in-an-infinite-loop-from-outside-that-loop]

[링크 : http://stackoverflow.com/questions/25655706/how-to-terminate-or-stop-a-detached-thread-in-c]

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

linux shared memory 관련  (0) 2016.12.22
linux ipc  (0) 2016.12.20
fd <-> fp 변환  (0) 2016.10.07
shared memory - linux/IPC  (0) 2016.06.28
메시지 큐 - ipc  (0) 2016.06.28
Posted by 구차니
Linux API/linux2016. 10. 7. 16:59

int fileno(FILE *stream);

FILE *fdopen(int fd, const char *mode);


[링크 : http://stackoverflow.com/.../how-can-i-convert-a-file-pointer-file-fp-to-a-file-descriptor-int-fd]

[링크 : http://stackoverflow.com/.../how-to-get-a-file-pointer-from-a-file-descriptor]

[링크 : https://linux.die.net/man/3/fileno]

[링크 : https://linux.die.net/man/3/fdopen]

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

linux ipc  (0) 2016.12.20
pthread detach while  (0) 2016.12.20
shared memory - linux/IPC  (0) 2016.06.28
메시지 큐 - ipc  (0) 2016.06.28
pthread mutex shm_open  (0) 2016.06.27
Posted by 구차니
Linux API/linux2016. 6. 28. 15:56

System V와 POSIX 차이

[링크 : http://stackcanary.com/?p=59]


System V

[링크 : http://linux.die.net/man/2/shmget]

[링크 : http://linux.die.net/man/2/shmat] attach

[링크 : http://linux.die.net/man/2/shmdt] detach

[링크 : http://linux.die.net/man/2/shmctl]


POSIX


System V shared memory (shmget(2), shmop(2), etc.) is an older shared memory API. POSIX shared memory provides a simpler, and better designed interface; on the other hand POSIX shared memory is somewhat less widely available (especially on older systems) than System V shared memory.

[링크 : http://linux.die.net/man/7/shm_overview]

    [링크 : http://linux.die.net/man/3/shm_open]

    [링크 : http://linux.die.net/man/2/ftruncate]

    [링크 : http://linux.die.net/man/2/mmap]

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

pthread detach while  (0) 2016.12.20
fd <-> fp 변환  (0) 2016.10.07
메시지 큐 - ipc  (0) 2016.06.28
pthread mutex shm_open  (0) 2016.06.27
리눅스 동적 라이브러리(*.so) 사용하기  (0) 2016.04.04
Posted by 구차니