From b5b11c2979a3a1989cdd7b14ee4e696ef71b72e1 Mon Sep 17 00:00:00 2001 From: TriantaTV Date: Wed, 12 Oct 2022 15:44:12 -0500 Subject: [PATCH] Added shared struct and made code run --- Makefile | 5 +++-- bin/driver.out | Bin 16096 -> 16376 bytes build/consumer.o | Bin 928 -> 1576 bytes build/driver.o | Bin 1944 -> 1864 bytes build/producer.o | Bin 928 -> 1640 bytes include/consumer.h | 2 +- include/producer.h | 2 +- include/shared.h | 13 +++++++++++++ src/consumer.c | 12 +++++++----- src/driver.c | 10 +++++----- src/producer.c | 14 +++++++++----- src/shared.c | 1 + 12 files changed, 40 insertions(+), 19 deletions(-) create mode 100644 include/shared.h create mode 100644 src/shared.c diff --git a/Makefile b/Makefile index 3647fa0..916e159 100644 --- a/Makefile +++ b/Makefile @@ -8,7 +8,8 @@ compile: gcc $(INC) -c -o build/consumer.o src/consumer.c exec: - ./driver.out + gcc -o bin/driver.out build/*.o + ./bin/driver.out clean: - rm driver.out consumer.out producer.out \ No newline at end of file + rm driver.out consumer.out producer.out diff --git a/bin/driver.out b/bin/driver.out index 9c6c0fdbda7380c2c9a39cdfa135a46789c4087f..28296480bb553597ca4809096ef032fa676db0ec 100755 GIT binary patch delta 1636 zcmaJ>Z%kWN6u>!H>3F^k&}l;WTfCWCNR z`nA%m_U3Cpe$_nl_o>XAUFlmt_jlihr0IS7G_07MuupEJPx94U@_uvV$Z#+`1UKax zxFf%9qC|#h*&>zUkhzzZX>;aPt7N4xr+gn(vX5h)c;Id#a95pDwN%eOae zz0>G?pC;wHu=(x^*K zyu(y#ENxK}sHvIHZeRUXSJ*-CD|-kt;Z#qDL&cxJsl(JhKt|7t8}QDavu+8(>R;*494)&>co zTTFiTaLRF3E$jL;;sL~Ki2aBe#3{sg5hqr3J&$+}u?lZu7SV^8Mm&Jn@Tac7jyQ=p zh4=~LMZ`;pKOnNfI$(pI*bgyxJX*^(fd`dIsk6e|Q@+81+iIMj;+(|1n-JIdXV>{} zFg%L<#$vu>ozG$XF!JGIUV4QKn14Ce^ZBwK)nB?t@WPs42MT^igZmY@7x_Q_r@%qv zf4UFPQW`^h+5W*sIKR_J7qq3FubJo<@M5ErehIrh4G&yJ4P`f011CInbOAo{I9-eU zpo0|tVZw+k!%dIVW5%p@qL9yQMx0+CE*&Bs7jfPd#;f5-lN0}Tw8`l@jT$#`5z=m) zE&O(a2iYFxAlb-*y%0C>D0A?P3;$NZ@>@kg664B$c%J1M&m(J-T*T6TujeeRpyw6g z`L*yY^zxmEpBC{#FF&$MTsgtciB905gz!;Hd>V!Rn#j&yKlJiq96NoOlpffPgd1ig2R#Tg%}zQ7*PFlE+!r1`J~|YN z)c28KWMGUhjzz-3(LPAD1RfG}@4!fCh;#}qeA{vq_ISIR2ZoP_A|nR5j~@y}i18I| z@7nuZM`v$SeN(-cL_$O1u@Kk6DX+WSNMHoC3*K3(9d6B-B##6g{(5WSxi7#Q{w}%! zsP9q8_!V2>JuKiL&|S|+Nvd`1TBQ~J>;sJB5uBCqeA{;GbPErVlQ7ZNDpj|_rM9|% E0oE6s&;S4c delta 982 zcmZ9Ke@IhN6vyvfP(t?|vAcx^OJN z_3r2wW7pVmxT3mA?XaLS(|WM7jWEErz%*;s1cKeZ@JaZ~MpZ1K(69bZ)o?=7PT9n` zW?9Qj5g0doZsKBnb7Cx#oD`O%o}ztoOk}MX7m{N1S&kSdVr(+C35A%j6c?6auf?nC z+B_n;pGdu>MwZiQc?S;D_KGdC^!~pZLNzY@5#xszy<&MmX&D{~t5Ys?zkQMTXtL>H zUNd}yWBa9Kt${P$;c&OFi^JCaT&b4}1pVGfM`tj^d3;{3!|w}4&Z1@0ky0-qbe(FK zbVC}Pso&{z09iJlP7fh@ZWuZY)65g~@b;5JZ z(=4qPuM|TJWX7n($bI8B1Pd55AXTB)z*=Rt3}d7bW3iw-SOsKM&hrXY11Tbf?umC5H!>EoI{ug34~28pW?Brf>Iv2x?Ct@NLx86a zk4gED-HrR3_SCoAZFZXjik%`1IZF~Ronti7!~awPJ+{cdbX5ptG)Ao2*hi8{u|cjgE0DRuP3e{Dyx(neWH| diff --git a/build/consumer.o b/build/consumer.o index f28fa711ceac648467aa6417091af4f67edbb724..b5cbf35c1c722c5999fa3d9206e69c85050bd9b4 100644 GIT binary patch literal 1576 zcmbtT&1=+95T9&o>&Movq99adJ@^Iou@Ns8(crRe5b+@Ft)*tyr!8%gk`LJm(t{u@ zUUKv=5dRFpgL?Cy5PI+;UPKn^Ofu6=p8-J!=FQA+KHg;JWv6q0v1VByWWjA1TY>`Y z*2cP%s}9US9e&K7|J8MeU)`7A8oPuKJEPZ~k^9CSe$4GG`}|=)X!zo1wz6-c3QO(w zLi0+umj+4Nv~6`=wdU=cX>QwB8NsrX$PMH}$V(5pfbF~|Yyz3+R3X56{t&D|!GaX+M0XSJxBmi@z`c zcUTb3l6bUN(76&$GZ(zcI6a5blK{uSrLRW@F5dwv-u4r(hcbx@xh7hqH$9c;K?3Tr zmw2FhaSW;-`o0bj3&KPzd;{}w;`KM!ej21|D+;%Clx%~_E9kY=Cz0oC?%@AK6Vqv@ zQ$`tw?K=iev1OV=gXZg$LDG4MEyjHUBl= z#$2i?eWIF^+<#dBmU6$y1;j-!hrTTvCEbj@hrVg#@|&aZcXS{%^K*R2`~>NtLN(3& zPaH6iK$d3y3gT7!YjHuB^JssREBUg&s=F!0;SbHoK%)Pfc4X!sVI0K)`oj6@0Q%>w RPoUr2J*5n||INST{{}eVi+%tA delta 235 zcmZ3%vw(eqhJ*qm0~|PjSq=oq2>P?-FKNn&yYqa;^yeqM2DZfcQU^5k+R z*~v4RY$ktVGMmKA$0$8nlUaW931$UOMWA+&Y0Q%inZ>~(>OdX`l86c`NZtS}@4=$L zY6|2rPIhDzW=x-akXc>Q7071?VkRI)1{sqNvZznaV3iQD*&>CxQ^QsvQnfWxC3sOI|jBgI2o1Z+SF>x+pKVkgTm zYEAZFbm7kjDRAWzXk&8bWn)U4JezT$Ry5~Ia!cdTyiGJbRb{?VrC%z z19T(^teot~EY5fUq-Jsfvj$`SZ96S%Osp z%8Fo>;A8{&9SE3#>g6ZT0LpPr-pFdtXaH0TA`RK>83QI40!f9*8`3G z7-N;g7B7!#Rkf*A8ogSTY3}1Y`OH*xsXm4>Oaj9csG*D)qy`6$`C`A!*RTR-gKdxO z5OIhB%ishbhXk(kFw9V#*(?-kNsj5d<>bw|Io)wg!xq{p8RnjD?(XS1!`i2QahiZc z6vul%9V`fwz==NMpTCOtJUn(pj=*0w*^#V<-#pxZ)m36s5~$zVeUrRya?*j>`OfFPc|YbQFDnn$GL}VR7Tu$9 zCX}dnY^+PMEK!cK^lSd|pQ_XU>g<2de`DUS3}07<&KsxyDb5Fj&j&Io2DMS@^k4iQ z)DCF9TwW~{tMzUWbqltwR@Cy6eWx4e_6<$qJ&9%z^YG*F^@ml;5Pf7O$2$kjW<7sQ zRxfWYX6H@}aG{G}>}*&0Q#q4=l_}?DH!uMykKJVso9B;=uZ_nyn8T)xCnJ+z?&S>q zJe(ZiGf#Fpi-~6q9-kHLyylX}X8^mR`7J~?;R>4jG-2(q)$BIBP&Me0mZaI{PUQKt z6Lh>VN_6N3&6dw=_V zv~l%4Qt=Aj_U2aT`kp?)|Ahj|`L($hrj>M3HX(HSm$3-Oy)3~^D{{kNP7>%8BG>Y7 zn(aao=o%t(`JZS^`yx^?z5h*&^P2x!Z=;siT!xz_`(HO9wCpc&)nMk-cV=Q}sS|V` zVh*m`C79l8RTz;(NdE-aA$ZMn{TDrE&~g6-FF>T8kGP?&7NEHOEOQIe~mC_kk%IkiYHdGdB9 z*~vGVY$h8qn@x6L=3|teoXIRdnS(`vQxT{iWE}J4LS}KWh&qtRfh3~B3X(Sf%XhFS zu$lsSjFSzSg&ET)GqR{lx&ry^K+FWh$RJ}fBda>lAuN;Eu!@LwK&1?zG{^>~$yZsm cId?!scqRuj3Qv|{Q{g-U6^Q_g%wgsM05Cfz+5i9m diff --git a/include/consumer.h b/include/consumer.h index 6aceb84..523e68e 100644 --- a/include/consumer.h +++ b/include/consumer.h @@ -2,7 +2,7 @@ #define CONSUMER_H void Consumer(void); -void consume_item(int item); +void consume_item(long int item); long int remove_item(void); #endif \ No newline at end of file diff --git a/include/producer.h b/include/producer.h index f0b441a..c97a24d 100644 --- a/include/producer.h +++ b/include/producer.h @@ -3,6 +3,6 @@ void Producer(void); long int produce_item(void); -void insert_item(int item); +void insert_item(long int item); #endif \ No newline at end of file diff --git a/include/shared.h b/include/shared.h new file mode 100644 index 0000000..3b1a7d3 --- /dev/null +++ b/include/shared.h @@ -0,0 +1,13 @@ +#ifndef SHARED_H +#define SHARED_H +#include + +typedef struct sharedMem +{ + int buffer[10]; + sem_t semConsumer; + sem_t semProducer; +} sharedMem; + + +#endif \ No newline at end of file diff --git a/src/consumer.c b/src/consumer.c index a66fbc2..88ae03c 100644 --- a/src/consumer.c +++ b/src/consumer.c @@ -1,20 +1,22 @@ #include "consumer.h" +#include "shared.h" void Consumer(void) { int item; while (1) { - down(&full); - down(&mutex); + // down(&full); + // down(&mutex); item = remove_item(); - up(&mutex); - up(&empty); + // up(&mutex); + // up(&empty); consume_item(item); + break; } } -void consume_item(item) +void consume_item(long int item) { ; } diff --git a/src/driver.c b/src/driver.c index 5469c56..0d189c6 100644 --- a/src/driver.c +++ b/src/driver.c @@ -1,15 +1,15 @@ #include -#include #include - -semaphore mutex = 1; -semaphore empty; -semaphore full = 0; +#include "consumer.h" +#include "producer.h" +#include "shared.h" int GetSplitAmount(char* argv); int main(int argc, char* argv[]) { + sharedMem testMemory; + int splitLimit = 1; if (argc == 2) splitLimit = GetSplitAmount(argv[1]); diff --git a/src/producer.c b/src/producer.c index 08eb76d..2739555 100644 --- a/src/producer.c +++ b/src/producer.c @@ -1,5 +1,6 @@ #include #include "producer.h" +#include "shared.h" void Producer(void) { @@ -7,11 +8,14 @@ void Producer(void) while (1) { item = produce_item(); - down(&empty); - down(&mutex); + // sem_wait(&semProducer); + // down(&empty); + // down(&mutex); insert_item(item); - up(&mutex); - up(&full); + // sem_post(&semProducer); + // up(&mutex); + // up(&full); + break; } } @@ -20,7 +24,7 @@ long int produce_item(void) return random(); } -void insert_item(int item) +void insert_item(long int item) { ; } \ No newline at end of file diff --git a/src/shared.c b/src/shared.c new file mode 100644 index 0000000..a036ba6 --- /dev/null +++ b/src/shared.c @@ -0,0 +1 @@ +#include "shared.h" \ No newline at end of file